【问题标题】:Cannot find element using Selenium find_element_by_partial_link_text使用 Selenium 找不到元素 find_element_by_partial_link_text
【发布时间】:2016-04-03 21:47:36
【问题描述】:

我正在尝试单击以下页面上的“查看更多结果”按钮:http://www.chadbourne.com/search/people?az[b]=b

我的代码是直截了当的,我已经尝试了多次迭代。

driver = driver.Firefox()
driver.get("http://www.chadbourne.com/search/people?az[b]=b")
element = driver.find_element_by_partial_link_text("View more results")

element = driver.find_element_by_partial_link_text("view")

element = driver.find_element_by_partial_link_text("results")

无论我尝试上述哪个选项,我都会收到 NoSuchElementException。

这很奇怪,因为页面上明显存在该元素:

<a href="/search/people?s=&amp;az[b]=b&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;page=1">View more results</a>

有什么想法吗?

【问题讨论】:

    标签: python selenium firefox


    【解决方案1】:

    页面加载需要一些时间,该元素不是立即可用的。让我们wait for it 可点击并将定位器更改为 CSS 选择器:

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    
    driver = webdriver.Firefox()
    driver.get("http://www.chadbourne.com/search/people?az[b]=b")
    
    wait = WebDriverWait(driver, 20)
    
    # get more results
    more_results = wait.until(
        EC.element_to_be_clickable((By.CSS_SELECTOR, ".load-more-pager-wrapper .pager-next"))
    )
    more_results.click()
    

    【讨论】:

    • 我刚刚尝试了其他方法。当我使用全部大写“查看更多结果”时,即使 html 表明链接文本不是全部大写,它似乎也可以工作。无论哪种方式,感谢您的回复。这是一个多么奇怪的问题。
    • @NeilAggarwal 是的,我认为将链接文本转换为大写也应该可以。好点子。
    猜你喜欢
    • 1970-01-01
    • 2019-01-02
    • 2021-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多