使用Python和Selenium为什么我无法通过链接文本找到链接?

时间:2015-07-16 11:48:42

标签: python selenium selenium-webdriver

我有一个列表webelement,其中包含一堆链接。 html看起来像:

testCompile "junit:junit:${JUNIT_VERSION}"
testCompile "org.mockito:mockito-core:${MOCKITO_VERSION}"
testCompile "org.powermock:powermock-module-junit4:${POWERMOCK_VERSION}"
testCompile "org.powermock:powermock-module-junit4-rule:${POWERMOCK_VERSION}"
testCompile "org.powermock:powermock-api-mockito:${POWERMOCK_VERSION}"
testCompile "org.powermock:powermock-classloading-xstream:${POWERMOCK_VERSION}"

testCompile "com.jakewharton:disklrucache:${DISKLRUCACHE_VERSION}"
testCompile "org.robolectric:robolectric:${ROBOLECTRIC_VERSION}"
testCompile "org.robolectric:shadows-core:${ROBOLECTRIC_VERSION}"
testCompile "org.robolectric:shadows-support-v4:${ROBOLECTRIC_VERSION}"

ANDROID_TEST_VERSION = 0.3
DEXMAKER_VERSION = 1.4-SNAPSHOT
ESPRESSO_VERSION = 2.2
JUNIT_VERSION = 4.12
MOCKITO_VERSION = 1.10.19
POWERMOCK_VERSION = 1.6.2
ROBOLECTRIC_VERSION = 3.0
UIAUTOMATOR_VERSION = 2.1.1

当我尝试做类似的事情时:

<li>
<a href="/shopping/cart_items/12444" data-method="delete" rel="nofollow" class="ss-delete"><span class="ss-icon"></span> Remove</a>
<a href="/sessions/new"><span class="ss-icon"></span> Sign in to save items</a
...

我收到错误消息:

  

NoSuchElementException:消息:无法找到元素:   {“method”:“link text”,“selector”:“登录以保存项目”}

我能够找到这个链接而不是做一个find_elements_by_tag_name('a'),然后只使用带有正确HREF的链接,但我想了解为什么第一个方法失败。

2 个答案:

答案 0 :(得分:1)

在我之前发生find_element_by_link_text方法有时可行,有时不起作用;即使是在一个案例中。我认为这不是访问元素的可靠方式;最好的方法是使用find_element_by_id

但在您的情况下,当我访问该页面时,没有ID可以帮助您。您仍然可以通过两种方式尝试find_elements_by_xpath

1- Accessing title: find_element_by_xpath["//a[contains(@title = 'Sign in to save items')]"]

2- Accessing text: find_element_by_xpath["//a[contains(text(), 'Sign in to save items')]"]

希望它有所帮助。

答案 1 :(得分:0)

问题很可能是在链接文本之前或之后的额外空格中。你仍然可以通过“部分链接文本”匹配来接近它:

element.find_element_by_partial_link_text('Sign in to save items')