Selenium驱动程序单击元素,但不会重定向到下一页

java selenium automation

987 观看

3回复

1 作者的声誉

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);
        }

正如您在图片中首先看到的那样,我需要单击“更多...”链接,该链接正在工作,它打开了面板,我需要在其中单击购买申请

作者: Kartik 的来源 发布者: 2017 年 9 月 15 日

回应 3


0

8737 作者的声誉

分析:

有几种可能导致您出现问题的原因:

  1. 单击页面或链接所在的区域时,浏览器正忙于将元素渲染到页面,因此没有空闲资源来响应您的单击。

  2. 单击该页面或链接所在的区域时,开发人员使用javascript在页面加载过程中将click事件注册到该链接,此时,该javascript代码段尚未执行或未全部强制执行,导致click事件不会注册到链接,因此没有单击事件来响应您的单击。

您可以通过其他系统的原因,可能的原因是浏览器更快,网络更快等。

解:

在单击之前添加sleep()并在每个系统上运行多次,如果全部通过,则表明您的等待不够,至少在该系统上。删除sleep()并修改等待条件,以使等待可以更接近页面加载结束

作者: yong 发布者: 2017 年 9 月 15 日

0

61677 作者的声誉

文件明确提到,ExpectedConditions您使用的是IE条款visibilityOfElementLocated采取的照顾expectation for checking that an element is present on the DOM of a page and visible,但如果该元素是它没有盖DisplayedEnabled

接下来,由于我们尝试click()在元素上调用方法,所以visibilityOfElementLocated我们将使用代替elementToBeClickable

  • Element is Clickable -显示并启用。

如果我们将ExpectedConditions子句用作elementToBeClickable,而不是使用,sendKeys(Keys.ENTER)我们可以直接调用该click()方法并摆脱它Thread.sleep(500)

作者: DebanjanB 发布者: 2017 年 9 月 15 日

0

56 作者的声誉

我也碰巧遇到了click()问题。

您正在使用哪个浏览器和哪个版本?

Firefox和Internet Explorer的CLICK出现此问题,我使用JavaScript单击找到的Web元素。

WebElement element = driver.findElement(By.id("webElementId"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", element);
作者: biligunb 发布者: 2017 年 9 月 16 日
32x32