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

时间:2017-09-15 04:24:13

标签: java selenium automation

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

as you can see in the pic first i need to click on "More..." link which is working and it opens up the panel in which i need to click on purchase requisition

4 个答案:

答案 0 :(得分:0)

<强>分析:

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

  1. 点击它时链接内部链接的页面或区域,此时点浏览器正忙于将元素呈现到页面,它没有空闲资源来响应您的点击。

  2. 点击它时链接里面链接的页面或区域,开发人员使用javascript在页面加载过程中将点击事件注册到链接,在那个时间点,javascript片段尚未执行或者不是所有强制导致点击事件没有注册到链接,因此没有点击事件来响应您的点击。

  3. 你可以传递其他系统的原因,可能的原因是浏览器速度更快,网络速度更快等等。

    <强>解决方案:

    在点击之前添加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用于未重定向到下一页的元素