我有一個在查詢完成后清除查詢的元素,但我無法讓 selenium 找到它。
這是元素的 xpath:
/html/body/main/div/section[1]/div/a[2]
這是元素的 html:
<a onclick="onClearClicked()" class="btn btn--secondary btn--sm">clear</a>
我嘗試過的事情:
使用整個 xpath、css 選擇器、類名、文本進行查找
使用 css 查找頁面上的所有按鈕并遍歷它們,直到找到正確的按鈕(它沒有找到任何帶有文本的按鈕)
buttons = mydriver.find_elements_by_css_selector("button")
for button in buttons:
print(button.text)
if button.text.strip() == "clear":
button.click()```
- 退出我之前的 iframe 并使用完整的 xpath
driver.switch_to().defaultContent()

我有一個解決方法,涉及退出驅動程式并為每個查詢重新打開它,但這將涉及每次登錄并導航到正確的頁面,我寧愿能夠只使用清除按鈕。
uj5u.com熱心網友回復:
您的 html 沒有任何“按鈕”元素;它是一個“a”(超鏈接)元素。所以,你應該這樣做: -
buttons = mydriver.find_elements_by_css_selector("a")
uj5u.com熱心網友回復:
使用完整的 xpath 不是一個好方法,所以試試下面的代碼:
buttons =driver.find_elements_by_css_selector("[class='btn btn--secondary btn--sm']")
for button in buttons:
print(button.text)
if button.text.strip() == "clear":
button.click()
uj5u.com熱心網友回復:
driver.find_element(By.XPATH,"//a[.='clear']").click()
如果您想單擊文本清除的元素,您只需查找帶有該文本的 a 標記。
uj5u.com熱心網友回復:
該元素是一個<a>標簽,其內部文本清晰
<a onclick="onClearClicked()" class="btn btn--secondary btn--sm">clear</a>
解決方案
要單擊可點擊元素,您需要為element_to_be_clickable()誘導WebDriverWait,您可以使用以下任一定位器策略:
使用LINK_TEXT:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.LINK_TEXT, "clear"))).click()使用CSS_SELECTOR:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a.btn.btn--secondary.btn--sm[onclick^='onClearClicked']"))).click()使用XPATH:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[@class='btn btn--secondary btn--sm' and starts-with(@onclick, 'onClearClicked')]"))).click()注意:您必須添加以下匯入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/466289.html
標籤:Python 硒 路径 css 选择器 网络驱动程序等待
