Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用Selenium选择具有特定内容的锚点_Python_Selenium - Fatal编程技术网

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

Python 使用Selenium选择具有特定内容的锚点,python,selenium,Python,Selenium,我有一个HTML元素,如下所示: <a class="country" href="/es-co"> Columbia </a> 如何根据“Columbia”内容选择锚元素?我不能使用find\u element\u by\u class\u css\u选择器,因为a.country代表六个元素。如何使用Silenium和Python选择该元素并单击它(通过IE,如果有任何关系的话) 顺便说一句,我可以有任何数量的链接与相同的文本和CSS选择器。Sileni

我有一个HTML元素,如下所示:

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

如何根据“Columbia”内容选择锚元素?我不能使用
find\u element\u by\u class\u css\u选择器
,因为
a.country
代表六个元素。如何使用Silenium和Python选择该元素并单击它(通过IE,如果有任何关系的话)


顺便说一句,我可以有任何数量的链接与相同的文本和CSS选择器。Silenium如何区分?

没有
通过类css\u选择器查找元素。但是你是对的,你不能使用类名

最好的方法是使用
href=“/es co”
,如果它是唯一的

find_element_by_css_selector("a[href='/es-co']")
否则,您可以使用XPath通过文本查找

find_element_by_xpath(".//a[contains(text(), 'Columbia')])
如果有许多链接具有相同的定位器,则可以直接通过XPath或Selenium返回的列表对它们进行索引

例如,如果您有10个
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
对于带有可点击文本的
,Selenium提供了类似于
find\u with\u link\u text
find\u with\u partial\u link\u text
(API名称可能会有所不同,但您有这个想法)


如果有许多
具有相同的
文本/css类
,找到它们的最佳方法是使用selenium API接受的XPath。

使用该名称的选择器。@Nanor:请再次查看。:)我说的是
find\u element\u by_class\u css\u selector
不存在(你发布的),而不是
find\u element\u by_css\u selector
啊哈哈,诅咒我的胖手指!似乎我一直在尝试组合几个选择器。谢谢你的帮助。您的xpath内容在将来肯定会很有用。@Nanor:我之所以没有给出
find\u element\u by\u link\u text
,是因为您会遇到空白混乱的情况。尽可能使用CSS/XPath。匹配文本是一种糟糕的做法,如果你的网站将来支持多语言怎么办?你的测试会失败的,太好了!更多信息请点击此处: