[英]Selenium can't find the div element to click
我正在使用 selenium 通過 webdriver 自動化一些任務。
結果我找不到要點擊的 div,硒就是找不到它。
有人有建議嗎?
HTML :
<div aria-controls="leftAdvPnl_body" aria-expanded="false" aria-haspopup="true" class="rich-stglpanel-header " id="leftAdvPnl_header" onclick="SimpleTogglePanelManager.toggleOnClient(event,'leftAdvPnl');" onkeypress="return keypressclickhandle(event);" role="link" tabindex="0"><div aria-hidden="true" class="rich-stglpanel-marker"><div class="rich-stglpnl-marker" aria-hidden="true" id="leftAdvPnl_switch_on" style="display: none">«</div><div class="rich-stglpnl-marker" aria-hidden="true" id="leftAdvPnl_switch_off">»</div></div><span id="leftAdvPnl_header_label">Pesquisar</span><span aria-hidden="true"> </span></div>
代碼植物:
while len(navegador.find_elements_by_xpath('//*[@id="leftAdvPnl_header"]')) < 1:
time.sleep(1)
print("Procurando formulário do processo")
link=navegador.find_element_by_xpath("//*[@id="leftAdvPnl_header"]")
link.click()
謝謝!
您有 2 個嵌套的雙引號,而不是"//*[@id="leftAdvPnl_header"]"
使用'//*[@id="leftAdvPnl_header"]'
您需要等待元素可點擊,因此請嘗試:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="leftAdvPnl_header"]'))).click()
如果我們在HTML DOM
是否有唯一條目,請檢查dev tools
(谷歌瀏覽器)。
您應該檢查的 xpath :
//div[@id='leftAdvPnl_header']
檢查步驟:
Press F12 in Chrome
-> 轉到element
部分 -> 執行CTRL + F
-> 然后粘貼xpath
並查看您想要的element
是否被1/1
匹配節點突出顯示。
如果我們有 1/1 匹配節點,請確保:
代碼 :
try:
WebDriverWait(navegador, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@id='leftAdvPnl_header']"))).click()
print("Clicked on web element")
except:
pass
進口:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
要單擊帶有Pesquisar
文本的元素,您可以使用以下任一定位器策略:
使用css_selector
:
driver.find_element(By.CSS_SELECTOR, "div.rich-stglpanel-header#leftAdvPnl_header span#leftAdvPnl_header_label").click()
使用xpath
:
driver.find_element(By.XPATH, "//span[text()='Pesquisar' and @id='leftAdvPnl_header_label']").click()
理想情況下,要單擊元素,您需要為element_to_be_clickable()
引入WebDriverWait ,您可以使用以下任一定位器策略:
使用CSS_SELECTOR
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div.rich-stglpanel-header#leftAdvPnl_header span#leftAdvPnl_header_label"))).click()
使用XPATH
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//span[text()='Pesquisar' and @id='leftAdvPnl_header_label']"))).click()
注意:您必須添加以下導入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.