Selenium 两个具有相同 xpath 的按钮。无法点击我需要的那个
Selenium two buttons with same xpath. Unable to click the one I need
我正在测试的网页上有两个“导出”按钮。
我可以点击第一个使用:
driver.find_element_by_xpath("//button[contains(.//text(),'EXPORT')]").click()
然后驱动程序选择一个下拉菜单,然后出现另一个 div,同样带有一个导出按钮。
我的代码在尝试执行时出错:
driver.find_element_by_xpath("//button[contains(.//text(),'EXPORT')]").click()
这个元素是:
selenium.common.exceptions.ElementClickInterceptedException:消息:元素点击被拦截:元素 ... 在点 (1824, 89) 不可点击。其他元素将收到点击:...
(会话信息:chrome=92.0.4515.107)
所以它说它无法点击第一个EXPORT按钮,而第二个可以点击。
我尝试将我的 xpath 表达式修改为:
driver.find_element_by_xpath("//button[class()='MuiButtonBase-root MuiButton-root MuiButton-contained MuiButton-containedPrimary' and (.//text(),'EXPORT')]").click()
以及其他一系列尝试,但每次都无法定位。我希望能够单击第二个导出按钮(在图片中显示的按钮 class 片段中)。
您可以在 xpath 索引的帮助下区分这两个 按钮。
示例如下:-
(//span[text()='EXPORT']/..)[1]
第二个按钮:-
(//span[text()='EXPORT']/..)[2]
对于这个错误
selenium.common.exceptions.ElementClickInterceptedException: Message:
element click intercepted: Element ... is not clickable at point
(1824, 89). Other element would receive the click: ... (Session info:
chrome=92.0.4515.107)
我建议您在启动时以全屏模式打开浏览器。
driver.maximize_window()
或者您也可以使用 ActionChain :-
from selenium.webdriver.common.action_chains import ActionChains
ActionChains(driver).move_to_element(driver.find_element(By.XPATH, "(//span[text()='EXPORT']/..)[2]")).click().perform()
更新 1 :-
您也可以使用 find_elements
存储所有网络元素,然后尝试单击您想要的元素。
all_export_button = driver.find_elements(By.XPATH, "//span[text()='EXPORT']/..")
#to click on first
all_export_button[0].click()
#to click on Second
all_export_button[1].click()
我正在测试的网页上有两个“导出”按钮。 我可以点击第一个使用:
driver.find_element_by_xpath("//button[contains(.//text(),'EXPORT')]").click()
然后驱动程序选择一个下拉菜单,然后出现另一个 div,同样带有一个导出按钮。
我的代码在尝试执行时出错:
driver.find_element_by_xpath("//button[contains(.//text(),'EXPORT')]").click()
这个元素是:
selenium.common.exceptions.ElementClickInterceptedException:消息:元素点击被拦截:元素 ... 在点 (1824, 89) 不可点击。其他元素将收到点击:... (会话信息:chrome=92.0.4515.107)
所以它说它无法点击第一个EXPORT按钮,而第二个可以点击。 我尝试将我的 xpath 表达式修改为:
driver.find_element_by_xpath("//button[class()='MuiButtonBase-root MuiButton-root MuiButton-contained MuiButton-containedPrimary' and (.//text(),'EXPORT')]").click()
以及其他一系列尝试,但每次都无法定位。我希望能够单击第二个导出按钮(在图片中显示的按钮 class 片段中)。
您可以在 xpath 索引的帮助下区分这两个 按钮。
示例如下:-
(//span[text()='EXPORT']/..)[1]
第二个按钮:-
(//span[text()='EXPORT']/..)[2]
对于这个错误
selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element ... is not clickable at point (1824, 89). Other element would receive the click: ... (Session info: chrome=92.0.4515.107)
我建议您在启动时以全屏模式打开浏览器。
driver.maximize_window()
或者您也可以使用 ActionChain :-
from selenium.webdriver.common.action_chains import ActionChains
ActionChains(driver).move_to_element(driver.find_element(By.XPATH, "(//span[text()='EXPORT']/..)[2]")).click().perform()
更新 1 :-
您也可以使用 find_elements
存储所有网络元素,然后尝试单击您想要的元素。
all_export_button = driver.find_elements(By.XPATH, "//span[text()='EXPORT']/..")
#to click on first
all_export_button[0].click()
#to click on Second
all_export_button[1].click()