当页面上有这么多元素时,我如何 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 所有按钮的列表。
基本上我想做的是 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 所有按钮的列表。