我是Selenium
的新手,我正在编写代码以便在IE
中工作。我使用Mozilla
从Firebug
获取属性,然后在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);
我使用此代码,以便我的代码将等到对象加载后再执行所需的操作。
此代码适用于所有其他元素,但不适用于此
答案 0 :(得分:0)
如果xpath正确,上面的代码应该有效。我怀疑它不起作用,因为你的应用程序可能正在进行ajax调用。
如果正在进行ajax调用,请尝试使用
Thread.sleep(2000L);
答案 1 :(得分:0)
在上面的代码中你有Id,我认为它不是动态的。首先尝试使用Id