使用“find_element_by_link_text”时的NoSuchElement异常错误

时间:2013-12-05 21:21:02

标签: python selenium selenium-webdriver

Selenium无法按链接文字找到元素:

    time.sleep(3);
    driver = self.driver
    driver.implicitly_wait(10)
    findHeaderLearn = driver.find_element_by_link_text('Learn')
    findHeaderLearn.click()
    pageTitle = driver.title
    driver.back()
    return pageTitle

我收到此错误: 提出exception_class(消息,屏幕,堆栈跟踪) NoSuchElementException:消息:u'无法找到元素:{“method”:“link text”,“selector”:“Learn”}'; Stacktrace:

我通过网络广泛阅读,但无法找到任何有关它无法找到元素的提示。

添加了“implicitly_wait(10)”以确保元素可见,但它没有解决问题。

还有其他想法吗?

以下是HTML代码:

<div class="l-wrap">
<h1 id="site-logo">
<div id="nav-global">
<h2 class="head">
<ul class="global-nav">
<li class="global-nav-item">
<li class="global-nav-item">
<a class="global-nav-link" href="/learn/">Learn</a>   ======> im trying to find this element
</li>
<li class="global-nav-item">
<li class="global-nav-item">
<li class="global-nav-item global-nav-item-last buy-menu">
<li class="global-nav-item global-nav-addl">
</ul>enter code here
</div>
<a class="to-bottom" href="#l-footer">Jump to Bottom of Page</a>
</div>

2 个答案:

答案 0 :(得分:0)

尝试使用其他定位器,最好是Css Selector或XPath。请勿使用find_element_by_link_text

CSS选择器:

findHeaderLearn = driver.find_element_by_css_selector("#nav-global a[href*='learn']")

的XPath:

findHeaderLearn = driver.find_element_by_xpath(".//*[@id='nav-global']//a[contains(@href, 'learn')]")
# findHeaderLearn = driver.find_element_by_xpath(".//*[@id='nav-global']//a[text()='Learn']")

答案 1 :(得分:0)

通过linktext查找元素可能不如CSS选择器或xpath可靠。在对元素执行任何操作之前,还请验证该元素是否陈旧