使用Selenium选择具有特定内容的锚点

时间:2014-03-20 10:24:31

标签: python selenium

我有一个HTML元素如下:

<a class="country" href="/es-co">
    Columbia
</a>

如何根据内容选择该锚元素&#39;哥伦比亚&#39;?我无法使用find_element_by_class_css_selector,因为a.country代表了六个元素。如何选择该元素并使用Silenium with Python单击它(通过IE,如果有任何影响)?

顺便说一下,我可以使用相同的文本和CSS选择器进行任意数量的链接。 Silenium如何区分?

2 个答案:

答案 0 :(得分:4)

没有find_element_by_class_css_selector。但你是对的,你不能使用类名。

最好的方法是使用href="/es-co",如果它是唯一的。

find_element_by_css_selector("a[href='/es-co']")

否则,您可以使用XPath

通过文本查找
find_element_by_xpath(".//a[contains(text(), 'Columbia')])

如果您有许多带有相同定位符的链接,那么您可以直接通过XPath或Selenium返回的列表对它们建立索引。

例如,如果您有十个Columbia

find_element_by_xpath(".//a[contains(text(), 'Columbia')][10]") # one-based index, one element only
find_elements_by_xpath(".//a[contains(text(), 'Columbia')]")[9] #  find_elements_* gives you zero-base index list

答案 1 :(得分:0)

如果<a>包含可点击的文字,Selenium会提供find_with_link_textfind_with_partial_link_text等API(API名称很多,但您明白了)。

如果有许多<a>具有相同的text/css-class,那么找到它们的最佳选择是使用selenium API接受的XPath。