【问题标题】:How to click on the element with text as Contact using Selenium and Python如何使用 Selenium 和 Python 单击文本作为联系人的元素
【发布时间】:2019-08-29 22:41:20
【问题描述】:

我正在使用 selenium 获取某个站点的所有支持页面。在一个特定页面上我有一个错误。 这是页面的代码:

<a href="?a=support" class="">
<span><b></b> Contact</span>
<b></b> Contact
</a>

我正在尝试多次尝试/排除条件以找到支持页面。

try:
    print ("FINDING SUPPORT ...")
    driver_hyip.find_element_by_css_selector("a[href*='support']").click()
    driver_hyip.execute_script("window.alert = function() {};")
except:
try:
    print ("NOT FINDING SUPPORT, TRYING ANOTHER WAY")
    driver_hyip.find_element_by_xpath("//a[@href='?a=support']").click()
except:
    print ("NOT FINDING SUPPORT, TRYING TO FIND CONTACT")
    driver_hyip.find_element_by_css_selector("a[href*='contact']").click()

我希望我的代码找到该页面,但我得到了:

Message: no such element: Unable to locate element: {"method":"css selector","selector":"a[href*='contact']"}

PS:你知道是否有其他方法可以在 selenium 中尝试多路径?因为在这里我做了很多尝试/除了在我的代码中。

【问题讨论】:

  • 您可以在 xpath 中使用OR 来组合多个条件。

标签: python selenium xpath css-selectors webdriverwait


【解决方案1】:

要在文本为 Contact 的元素上 click(),您需要为 element_to_be_clickable() 诱导 WebDriverWait,您可以使用以下任一 Locator Strategies

  • 使用CSS_SELECTOR

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a[href$='support']>span"))).click()
    
  • 使用XPATH

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[contains(@href, 'support')]/span"))).click()
    
  • 注意:您必须添加以下导入:

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

【讨论】:

    猜你喜欢
    • 2020-05-02
    • 2022-11-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-31
    • 1970-01-01
    • 2021-12-28
    • 2017-11-23
    相关资源
    最近更新 更多