0

我正在使用 selenium 2.0 自动化代码。我从列表中选择一个(或多个)用户。然后我单击一个添加按钮,该按钮使用户名在网格上可见。当在网格上可见时,每个用户都将拥有一个有效的 Xpath。但是,即使从网格中删除了所有用户名,如果没有显示用户名,网格实际上会消失,Xpath 仍然不会返回 null。我正在使用 Xpath 检查它是否在对象(用户名)不可见时返回 null,但它没有按预期工作。有没有其他方法可以解决我的问题?我对 Selenium 很陌生。我正在使用硒 2.0。贝娄是我的代码的一部分。您的帮助将不胜感激。

//Check if user is present on the grid
By checkuser = By.xpath( ".//*[@id='sharing_list']/tbody/tr/td[1]/span");

 //if the grid is not empty, which means the grid is visible...
if(null!=checkuser)   //where the problem is!!
{
    //Click the button to erase the names in the grid, then the grid desapears
    webDriver.findElement(By.xpath("//*[@id='sharing_list']/tbody/tr/td[4]/span")).click();
       Thread.sleep(2000);

    //more code
    //............

}
4

1 回答 1

1

我可以看到这里发生了两件事:

首先是您的 XPath 足够通用,以至于它选择了一些不是用户的其他元素。要查看是否是这种情况,请在 Chrome 中转到该页面并执行必要的操作以使其处于您想要的状态。接下来,按 Ctrl-Shift-J,单击 Console,然后输入$x("//*[@id='sharing_list']/tbody/tr/td[4]/span"). 然后,Chrome 会向您显示您的选择器正在选择哪个元素。

然后,您的任务是确定它是否选择了其他元素,或者该元素是否不可见。页面上绝对有可能有一个元素,但不可见,并且 WebDriver 将选择不可见的元素(除非您正在这样做By.linkText())。如果要检查元素是否可见,请执行element.isDisplayed().

于 2013-08-02T03:05:24.377 回答