functionName是我需要点击的链接文本,脚本执行点击但不重定向。 在其他系统上执行时,相同的脚本重定向。
wait.until(ExpectedConditions.visibilityOfElementLocated(By.linkText(functionName)));
WebElement functionAnchor = driver.findElement(By.linkText(functionName));
try {
Thread.sleep(500);
functionAnchor.sendKeys(Keys.ENTER);
Thread.sleep(1000);
} catch (ElementNotVisibleException e) {
// Wait for stabilizing the rendered page
Thread.sleep(500);
// Scroll Into View the function link and perform click to avoid
// "Element Not Visible for clicking" error
((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", functionAnchor);
functionAnchor.click();
Thread.sleep(500);
}
答案 0 :(得分:0)
<强>分析:强>
有几种可能导致您出现问题的原因:
点击它时链接内部链接的页面或区域,此时点浏览器正忙于将元素呈现到页面,它没有空闲资源来响应您的点击。
点击它时链接里面链接的页面或区域,开发人员使用javascript在页面加载过程中将点击事件注册到链接,在那个时间点,javascript片段尚未执行或者不是所有强制导致点击事件没有注册到链接,因此没有点击事件来响应您的点击。
你可以传递其他系统的原因,可能的原因是浏览器速度更快,网络速度更快等等。
<强>解决方案:强>
在点击之前添加sleep()并在每个系统上多次运行,当全部通过时,它暗示你的等待是不够的,至少在这个系统上。删除sleep()并修改等待条件以使等待可以更接近页面加载结束
答案 1 :(得分:0)
documentation明确提到您正在使用的 ExpectedConditions
子句,即 visibilityOfElementLocated
负责{{1但是如果元素是 expectation for checking that an element is present on the DOM of a page and visible
和 Displayed
,则不会涵盖。
接下来,我们尝试在元素上调用 Enabled
方法,而不是 click()
,我们将使用 {{ 1}} 强>
visibilityOfElementLocated
- 显示并启用。 如果我们将 elementToBeClickable
子句用作 Element is Clickable
,而不是使用 ExpectedConditions
,可以直接调用 elementToBeClickable
方法,也可以删除 sendKeys(Keys.ENTER)
。
答案 2 :(得分:0)
我也碰巧遇到了click()问题。
您使用的浏览器和版本是什么?
Firefox和Internet Explorer在CLICK中遇到此问题,我使用JavaScript点击找到的网络元素。
WebElement element = driver.findElement(By.id("webElementId"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", element);
答案 3 :(得分:0)
我遇到了一个问题,它单击一个元素,但是没有重定向到下一页,也没有出现异常。我尝试使用Actions类,Javascript执行程序,Robot类和所有的wait语句,但是没有得到结果。这个解决方案对我有用。
try {
//Next page element
driver.findElement(By.xpath("//div[@class='web']/label/span[contains(text(), 'Congratulations!')]")).click();
} catch (Exception e) {
//current page element which is not redirecting after performing click operation
driver.findElement(By.xpath("//div[@class='form-main-container']/button")).click();
}
您必须尝试与下一页上的元素进行交互,并在try块中使用XPath作为元素,而在catch块中将XPath用于未重定向到下一页的元素
。