簡體   English   中英

find_element() with Link_Text 無法使用 Selenium Python

[英]find_element() with Link_Text not working using Selenium Python

每當我嘗試使用idnamexpath或任何它給出相同錯誤的東西查找元素時,我都是 selenium 的新手

from selenium import webdriver
driver = webdriver.Safari()
driver.get('https://www.lambdatest.com/blog/selenium-safaridriver-macos/')
driver.find_element(By.Link_Text,'Webinar' )

它通過下划線顯示錯誤。 我試着寫

driver.find_element_by_id('Webinar')

但它不是 go 通過我嘗試了不同的網站和不同的元素,如 class,id 但似乎通過任何方法查找元素都有問題是否需要安裝一些東西才能使其工作?

你必須在這里處理幾件事:

  • 支持的定位器策略應該是LINK_TEXT而不是Link_Text

  • link_text應該是Webinars而不是Webinar

  • 實際上,您的代碼行應該是:

     driver.find_element(By.LINK_TEXT, 'Webinars' )

但是,在網頁中有多個元素innerText as Webinars 因此,您需要使用定位器策略來唯一標識 DOM 中的元素。


解決方案

理想情況下,要從帶有文本作為Webinars菜單容器中定位可點擊元素,您需要為element_to_be_clickable()引入WebDriverWait並且您可以使用以下任一定位器策略

  • 使用CSS_SELECTOR

     element = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div.menu-menu-1-container a[href='https://www.lambdatest.com/webinar/']")))
  • 使用XPATH

     element = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='menu-menu-1-container']//a[text()='Webinars']")))
  • 注意:您必須添加以下導入:

     from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC

這個

driver.find_element(By.Link_Text,'Webinar')

應該

driver.find_element(By.LINK_TEXT, 'Webinar')

此外, from selenium.webdriver.common.by import By

如果您使用的是 Selenium4,那么您不應該真正使用:

driver.find_element_by_id('Webinar')

改用這個:

driver.find_element(By.ID, 'Webinar')

如果你看一下源代碼,你會看到:

class By(object):
    """
    Set of supported locator strategies.
    """

    ID = "id"
    XPATH = "xpath"
    LINK_TEXT = "link text"
    PARTIAL_LINK_TEXT = "partial link text"
    NAME = "name"
    TAG_NAME = "tag name"
    CLASS_NAME = "class name"
    CSS_SELECTOR = "css selector"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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