当页面上有这么多元素时,我如何 select 页面上的特定元素? Selenium 网络驱动程序 python;

How can I select a specific element on a page when there is so many of that element? Selenium webdriver python;

基本上我想做的是 select 只是用红色圈出的“回复”框,但整个页面中有很多这样的框。我的目标是能够 select 每个页面上的第一个“回复”框。我怎样才能 select 只是每个 post 的第一个回复框(这个 link 只是一个例子)?

目前这似乎不起作用:

reply = driver.find_element_by_xpath("//*[@id='content']/div/div[2]/div/div/div/div[1]/article/div/aside/ul/li[1]/div/div[2]/div/ul/li[7]/button/span/img")
reply.click()

非常感谢。

第一种方式:
用于定位任何重播按钮的 XPath 是

//button[@title="Reply"]

所以定位第一个重播按钮的 XPath 是

(//button[@title="Reply"])[1]

所以你可以简单地

driver.find_element_by_xpath('(//button[@title="Reply"])[1]').click()

第二种方式:
使用上面的 XPath,您可以检索所有重播按钮的列表,然后获取列表中的第一个元素并单击它,如下所示:

replay_buttons = driver.find_elements_by_xpath('//button[@title="Reply"]')
replay_buttons[0].click()

你也可以在这里使用 css_selector 而不是 XPath:

replay_buttons = driver.find_elements_by_css_selector('button[title="Reply"]')
replay_buttons[0].click()

检查页面我看到这个按钮的 class 名称是:<button class="Button Button--link">

所以你可以使用 driver.find_elements_by_class_name('Button Button--link') , 其中 returns 所有按钮的列表。