我正在使用Selenium
中的PhantomJsDriver
和Java
编写测试用例
Selenium - 3.0.1
PhantomJs - 2.1.1
预期情景: 打开一个弹出页面,在弹出页面中找到No of elements(实际上弹出的项目会显示在内)。
在任何给定的时间点,弹出窗口内只能有3个元素。所以我在这里做一个断言。
以下是相同的代码
使用findElements
方法
List<WebElement> foundItems = By.className("className").findElements(driver);
int count = foundItems.size();
使用Xpath
int count = driver.findElements(By.xpath("//div[@class='className']")).size();
在这两种情况下,我的计数错误,我总是将计数作为弹出页面内的多个元素。
但是,如果我遍历list
并使用.isDisplayed()
方法并保持一个标志,它会给我正确的计数。
我认为这可能是phantomJsDriver
维护的缓存或localStorage问题。
如何使用Selenium
和Java
清除缓存或LocalStorage。
或者还有其他方法可以完成它。
答案 0 :(得分:0)
您应该提供您网页的HTML,以便我们为您提供帮助。
至于本地存储,您可以使用javascript删除它,这应该可以正常工作:
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("window.localStorage.clear();");
答案 1 :(得分:0)
答案取决于两件事:
在下面的示例中,我展示了一个XPath,它将显示输入控件的数量,不包括那些被指定为类型&#39;隐藏的&#39;
driver.findElements(By.xpath("//input[not(@type='hidden')]")).size();
在我测试过的页面上,//输入返回了6项,但我只看到了4项。添加额外限定符会使发现的数字为4。
或者,您可以获得您要查找的每种类型的计数,并累积数字,即:
int eleCount = driver.findElements(by.xpath("//input")).size() +
driver.findElements(by.xpath("//a")).size() +
driver.findElements(by.xpath("//h1")).size();
将相应地返回输入元素,锚点和标题的数量。如果您需要了解更多信息,请检查更多标签名称。