python - 如何使用 Selenium 和 Python 单击文本为“联系人”的元素

标签 python selenium xpath css-selectors webdriverwait

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

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

我正在尝试使用许多尝试/异常(exception)条件来查找支持页面。

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 中尝试多路径?因为在这里我在代码中做了很多 try/except 操作。

最佳答案

click()在文本为 Contact 的元素上,您需要为 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
    

关于python - 如何使用 Selenium 和 Python 单击文本为“联系人”的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57709878/

相关文章:

python - PEP8、vim 和代码块

python - 如何使用python遍历传递给函数参数的列表?

python - 为什么这个简单的条件表达式不起作用?

xml - 将 ref 传递给 XML::XPath 对象到 Perl 中的 sub 不能按预期工作

python - xpath 转义 <> 内的所有内容,如何解决?抓取痧

python - 在 PyMySQL 中回滚多个查询

javascript - 为什么我们需要将 Firefox 驱动程序强制转换为 javascript 执行程序?

selenium - CSS 选择器-Webdriver 中的空格

java - Appium 测试启动在多个设备上失败

python - 使用 xpath 查找表元素中的所有 tr?