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

4 投票
2 回答
4647 浏览
提问于 2025-04-17 23:06

我有一个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_textfind_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

撰写回答