元素不可点击

时间:2015-02-23 06:23:32

标签: java selenium-webdriver

我使用带有镀铬驱动程序的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)

2 个答案:

答案 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();");

让我知道它是否有效......