我只在Chrome浏览器中看到这个。
完整的错误信息如下:
“org.openqa.selenium。WebDriverException:元素在点(411,675)不可点击。其他元素会收到点击:……”
“将接收点击”的元素位于相关元素的一侧,而不是在元素的顶部,也没有重叠,也没有在页面上移动。
我试过加一个偏移量,但也不行。该项目在显示的窗口上,不需要滚动。
我只在Chrome浏览器中看到这个。
完整的错误信息如下:
“org.openqa.selenium。WebDriverException:元素在点(411,675)不可点击。其他元素会收到点击:……”
“将接收点击”的元素位于相关元素的一侧,而不是在元素的顶部,也没有重叠,也没有在页面上移动。
我试过加一个偏移量,但也不行。该项目在显示的窗口上,不需要滚动。
当前回答
如果页面中已经加载了jQuery,可以执行以下javascript命令:
"$('#" + element_id + "').click()"
使用python executor的示例:
driver.execute_script("$('#%s').click()" % element_id)
其他回答
这可能会帮助那些正在使用WebdriverIO的人:
function(){
var runInBrowser = function(argument) {
argument.click();
};
var elementToClickOn = browser.$('element');
browser.execute(runInBrowser, elementToClickOn);
}
来源:https://www.intricatecloud.io/2018/11/webdriverio-tips-element-wrapped-in-div-is-not-clickable/
可能有很多因素会抛出这个错误。 首先,dom可能会在selenium webdriver捕获元素之后发生变化,或者在捕获元素之前元素中使用的所有java脚本都没有加载成功。 要解决这个问题,我们需要使用javascript等待或ajax等待如下。
wait = new WebDriverWait(driver, 30);
wait.until((ExpectedCondition<Boolean>) wd -> ((JavascriptExecutor) wd).executeScript("return document.readyState").equals("complete"));
e_driver = new EventFiringWebDriver(driver);
其次,大多数提供软件qa服务的公司的工程师尝试使用java脚本执行器进行单击操作。
如果这也不起作用,那么使用Actions类执行action。
你可以用JS模拟点击:
public void click(WebElement element) {
JavascriptExecutor js =(JavascriptExecutor)driver;
js.executeScript("document.elementFromPoint(" + element.getLocation().x + "," + element.getLocation().y + ").click();");
}
我做了一种蛮力点击,它对我有用。
try:
elem.click()
except:
print "failed to click"
size = elem.size
mid_of_y = int(size["height"])/2
stepts_to_do_to_left = int(size["width"])
while stepts_to_do_to_left > 0:
try:
print stepts_to_do_to_left, mid_of_y
action = webdriver.common.action_chains.ActionChains(driver)
action.move_to_element_with_offset(elem, mid_of_y, stepts_to_do_to_left)
action.click()
action.perform()
print "DONE CLICK"
break
except:
pass
我在使用xvfb-run运行测试时遇到此错误。他们在当地工作得完美无缺。使用chrome, webdriver / chromedriver / chrome / java等版本都相同。
在chromedriver - GitHub Link中,“不会修复”的bug由Tony Lâmpada指出,这可能与屏幕上可见/不可见的内容有关。
xvfb-run的帮助信息如下所示:
-s ARGS --server-args=ARGS arguments (other than server number and
"-nolisten tcp") to pass to the Xvfb server
(default: "-screen 0 640x480x8")
更改xvfb的分辨率可以消除错误:
xvfb-run -s "-screen 0 1280x1024x16" ...