如何使用selenium和python单击第二个html元素,它是第一个元素的副本?

如何使用selenium和python单击第二个html元素,它是第一个元素的副本?,python,html,selenium,Python,Html,Selenium,我想点击一个在整个网站上复制的元素(它是一个按钮),但是我如何点击第二个按钮,而不是第一个。 下面是我要单击的按钮的代码: <a href="/us/en/outletus/laptops/thinkpad/thinkpad-x-series/ThinkPad-X280/p/20KFCTO1WW-PC0YQ4GF" class="button-called-out button-full facetedResults-cta">SHOP NOW</a> 我试着用[a]点

我想点击一个在整个网站上复制的元素(它是一个按钮),但是我如何点击第二个按钮,而不是第一个。 下面是我要单击的按钮的代码:

<a href="/us/en/outletus/laptops/thinkpad/thinkpad-x-series/ThinkPad-X280/p/20KFCTO1WW-PC0YQ4GF" class="button-called-out button-full facetedResults-cta">SHOP NOW</a>

我试着用[a]点击某个按钮,但似乎不起作用。此外,href可能会根据产品更改shop now按钮。

您可以将XPath与索引a一起使用:

driver.find_element_by_xpath("(//a[.='SHOP NOW'])[{}]".format(a))

请注意,第一个元素有索引1。

您可以使用
收集元素。查找元素*

elements = driver.find_elements_by_link_text('insert_value_here')
elements[0].click()
在上面的示例中,单击第一个元素


此索引
[0]
,替换为所需内容。

如果您确定每次单击第二个按钮时 尝试使用下面的xpath

(//*[@class='button-called-out button-full facetedResults-cta'])[2]
如果,按钮数量不相同(可能变灰) 尝试使用findelements

List button=driver.findElements(By.xpath("//*[@class='button-called-out button-full facetedResults-cta']"));

button.size();

动态地将button.size()附加到xpath中的“2”位置,您可以单击第二个/第一个非灰色按钮

这是为了什么?
List button=driver.findElements(By.xpath("//*[@class='button-called-out button-full facetedResults-cta']"));

button.size();