當我嘗試:contains在 Selenium 中使用時By.CSS_SELECTOR,例如
presence = EC.presence_of_element_located((By.CSS_SELECTOR, ".btn:contains('Continue Shopping')"))
或者
presence = EC.presence_of_element_located((By.CSS_SELECTOR, ".btn\:contains('Continue Shopping')"))
或者
presence = EC.presence_of_element_located((By.CSS_SELECTOR, ".btn\\:contains('Continue Shopping')"))
Python 程式因錯誤而崩潰
Exception: Message: invalid selector: An invalid or illegal selector was specified
(Session info: chrome=95.0.4638.54)
可以:contains在硒中使用嗎?CSS 選擇器
$('.btn:contains("Continue Shopping")')
在 Chrome 的 JS 控制臺中作業正常。
在 Ubuntu 20.04 上使用 Chrome 95.0.4638.54、ChromeDriver 95.0.4638.54、Python 3.10。
uj5u.com熱心網友回復:
選擇器:contains('text')是一個jQuery 選擇器,而不是像 Selenium 所期望的有效的 C SS 選擇器。我假設它通過 Chrome 的 DevTools 控制臺在頁面上作業的原因是因為頁面上定義了 jQuery。
不幸的是,我不相信您可以使用 CSS 選擇器(鏈接)通過文本直接選擇元素。
據我所知,您有兩種選擇:
- 將您的選擇器更改為基于類或 ID(最簡單)
- 創建一個 Selenium 工具來運行一個使用這個 jQuery 選擇器的 JS 腳本;例如
execute_script("jQuery(" id ":contains('" text "')", id, text)
uj5u.com熱心網友回復:
正如 Aspok 所提到的,您的 CSS 定位器不是有效的 CSS 定位器。
要根據文本定位元素,您可以使用 XPath 定位器,例如:
//*[contains(@class,'btn') and(contains(text(),'Continue Shopping'))]
如果btn是該元素的唯一類名屬性,您的 XPath 可以是
//*[@class='btn' and(contains(text(),'Continue Shopping'))]
uj5u.com熱心網友回復:
正如@aspok 所解釋的,它不是一個有效的 css 選擇器。
如果您想擁有相同的 XPath,并且.btn是類并且具有文本/部分文本
Continue Shopping
您可以嘗試以下 XPath :
//*[contains(text(),'Continue Shopping')]
或者
//*[contains(text(), 'Continue Shopping') and contains(@class, 'btn')]
請檢查dev tools(谷歌瀏覽器)我們是否有唯一的條目HTML DOM。
您應該檢查的 xpath :
//*[contains(text(), 'Continue Shopping') and contains(@class, 'btn')]
檢查步驟:
Press F12 in Chrome- >去element節- >做一個CTRL F- >再貼上xpath看看,如果你需要的element是越來越強調與1/1匹配的節點。
另外,只要讓您知道,如果您找到多個匹配的節點,//*可以將其替換為。tag name
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/350413.html
標籤:Python 蟒蛇-3.x 硒 硒网络驱动程序 硒铬驱动器
上一篇:字典的嵌套字典
