簡體   English   中英

如何使用 Selenium 和 Python 單擊跨度元素

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM