在使用Java的Selenium中,程序没有单击该元素(NoSuchElementException)

时间:2013-12-24 09:22:20

标签: java selenium-webdriver

我是Selenium的新手,我正在编写代码以便在IE中工作。我使用MozillaFirebug获取属性,然后在IE中运行程序(特定于客户端)。即使在记录其xpath之后,仍有一个元素无法对其执行操作。该对象在屏幕上仍然可见,但仍然是编译器抛出(NoSuchElementException)并且代码失败。此元素没有id,类或名称,需要通过“xpath”或“linktext”进行寻址。 这是我的代码:

 do
        {
        if(D.findElement(By.xpath("//*[@id='popUpDiv-tpl']/div/div[2]/div[1]/div[1]/a[2]/span")).isDisplayed())
        {
            WebElement confirm_button = D.findElement(By.xpath("//*[@id='popUpDiv-tpl']/div/div[2]/div[1]/div[1]/a[2]/span"));
            confirm_button.click();
            flag = 0;
          try {
                synchronized (D) {
                    D.wait(5000);
                }

            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        else
        {
            D.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
            flag = 1;
        }
        }while(flag == 1);

我使用此代码,以便我的代码将等到对象加载后再执行所需的操作。

此代码适用于所有其他元素,但不适用于此

2 个答案:

答案 0 :(得分:0)

如果xpath正确,上面的代码应该有效。我怀疑它不起作用,因为你的应用程序可能正在进行ajax调用。

如果正在进行ajax调用,请尝试使用

Thread.sleep(2000L);

答案 1 :(得分:0)

在上面的代码中你有Id,我认为它不是动态的。首先尝试使用Id