[英]How to click on the span element using Selenium and Python
我正在嘗試識別以下元素,但無論使用何種方法,它都看不到它。
<span onclick="onClickTab('details'); return false;" id = "details" name = "details" class style ="display: inline;"">...</span>
我嘗試過: Xpath, relative xpath, onclick, onclick contains, by id, by name,
任何內容。 它是一個可點擊的按鈕,在選擇列表中的項目后出現。
當前代碼是:
try:
WebDriverWait(driver,30).until(EC.presence_of_element_located((By.XPATH,"//span[@onclick='onClickTab('details'); return false;']")))
except
print("Error")
driver.find_element_by_xpath("//span[@onclick='onClickTab('details'); return false;']").click()
如果有任何小的語法問題,例如“(”或類似的,可能是因為我是手動輸入的,那不應該是問題。如果您能指出正確的方向,我將永遠感激不盡。
我能夠使用以下 xPath 對元素進行 select :
//span[contains(@onclick, "onClickTab(\'details\'); return false;")]
使用 selenium,我使用:
try:
WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.XPATH,'//span[@onclick="onClickTab(\'details\'); return false;"]')))
except:
print("Error")
driver.find_element_by_xpath('//span[@onclick="onClickTab(\'details\'); return false;"]').click()
要單擊<span>
元素而不是 present_of_element_located presence_of_element_located()
您必須為element_to_be_clickable()
誘導WebDriverWait並且您可以使用以下任一定位器策略:
使用CSS_SELECTOR
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "span#details[name='details'][onclick^='onClickTab']"))).click()
使用XPATH
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//span[@id='details' and @name='details'][starts-with(@onclick, 'onClickTab')]"))).click()
注意:您必須添加以下導入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
這里我建議你在 Xpath 中使用 id。
driver.find_element_by_xpath("//span[contains(@id,'details')]").click()
如果存在多個元素,那么您必須使用driver.find_elements_by_xpath("//span[contains(@id,'details')]")
foreach 循環並檢查文本並單擊匹配元素。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.