我使用带有镀铬驱动程序的selenium webdriver。 我的问题是:
在页面中有一个10秒的计时器。计时器停止后,我需要单击一个元素。当计时器运行时,该元素的位置为(960,508)
(这只是一个假设,因为当计时器运行时,无法检查该元素)。当计时器停止时,元素会改变其位置,现在它的位置为(764,468)
。当我尝试单击此元素时,会显示一条错误消息:
"Element is not clickable at point (960, 508). Other element would receive the click"
我的问题是,在计时器结束后,我能够在位置(764,468)
找到元素。但是我无法点击该元素,并且在错误消息中该位置显示为(960,508)
。
答案 0 :(得分:0)
使用以下代码。这可能有所帮助。如果它不起作用,请完成此link.
WebDriverWait wait = new WebDriverWait(driver, 15);
WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id("ID of the element")));
Actions actions = new Actions(driver);
actions.moveToElement(element).click().perform():
答案 1 :(得分:0)
使用jquery
尝试使用显式等待等待元素直到其可见...然后使用jquery
单击它JavascriptExecutor jse = (JavascriptExecutor)driver;
如果你使用id
jse.executeScript("$(\"#id\").trigger('click');");
如果您使用的课程
jse.executeScript("$(\".class\").trigger('click');");
如果您使用名称
jse.executeScript("$("\tagname[name="name of the element\"]");
例如:
$("input[name='bt_login']").trigger('click');
未在网站中加载/使用包含Jquery
通常在所有网站中都使用jquery ...如果你的网站中没有jquery,那么将jQuery代码的内容从JavaScript文件(jquery.js,jquery.min.js或类似文件)加载到String中 并使用WebDriver对象将此String作为JavaScript代码执行。要将jQuery文件加载到String中,您可以使用Guava库。
URL jqueryUrl = Resources.getResource("jquery.min.js");
String jqueryText = Resources.toString(jqueryUrl, Charsets.UTF_8);
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript(jqueryText);
尝试使用javascript
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("document.getElementById('tournament_timer').click();");
让我知道它是否有效......