使用Selenium选择特定内容的锚点
我有一个HTML元素,如下所示:
<a class="country" href="/es-co">
Columbia
</a>
我该如何根据内容“Columbia”来选择这个链接元素?我不能使用 find_element_by_class_css_selector
,因为 a.country
代表了好几个元素。我该如何用Python的Selenium选择这个元素并点击它(如果通过IE浏览器的话,这有影响吗)?
另外,我可能有很多链接文本和CSS选择器都是一样的。Selenium是怎么区分这些的呢?
2 个回答
0
如果你遇到一个可以点击的文本链接,比如用 <a>
标签做的,Selenium 提供了一些方法,比如 find_with_link_text
或 find_with_partial_link_text
(这些方法的名字可能会有所不同,但你明白我的意思)。
如果有很多 <a>
标签的文本或样式类是一样的,最好的办法是使用 XPath,这种方式是 Selenium 接受的。
5
没有叫做 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