使用Selenium和Java获取弹出窗口中的元素计数
我在使用Selenium和Java获取弹出窗口中的元素计数,java,selenium,selenium-webdriver,phantomjs,ghostdriver,Java,Selenium,Selenium Webdriver,Phantomjs,Ghostdriver,我在Java中使用Selenium和PhantomJsDriver编写测试用例 硒-3.0.1 幻影JS-2.1.1 预期情景: 打开一个弹出式页面,找到弹出式页面中的元素数量(实际上是在弹出式页面中显示的项目) 在任何给定的时间点,弹出窗口中只能有3个元素。所以我在这里做一个断言 下面是相同的代码 使用findElements方法使用类名 List<WebElement> foundItems = By.className("className").findElements(d
Java
中使用Selenium
和PhantomJsDriver
编写测试用例
- 硒-3.0.1
- 幻影JS-2.1.1
findElements
方法使用类名
List<WebElement> foundItems = By.className("className").findElements(driver);
int count = foundItems.size();
列表
并使用.isDisplayed()
方法并维护一个标志,它将为我提供正确的计数
我认为这可能是由phantomJsDriver
维护的缓存或本地存储问题
如何使用Selenium
和Java
清除缓存或本地存储
或者有没有其他方法来完成它。您应该提供页面的HTML,以便我们可以帮助您 对于本地存储,您可以使用javascript删除它,这应该可以正常工作:
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("window.localStorage.clear();");
答案取决于两件事:
driver.findElements(By.xpath("//input[not(@type='hidden')]")).size();
在我测试的页面上,//input返回了6项,但我只看到了4项。添加额外的限定符将找到的数字增加到4
或者,您可以获取您要查找的每种类型的计数,并累加这些数字,即:
int eleCount = driver.findElements(by.xpath("//input")).size() +
driver.findElements(by.xpath("//a")).size() +
driver.findElements(by.xpath("//h1")).size();
将相应地返回输入元素、锚和标题的数量。如果您需要了解更多信息,请检查更多的标记名。那么弹出页面可能会将以前的计数维护为本地存储?如果我使用JavascriptExecutor,将清除所有这些内容,并在最近的弹出窗口中获得新的计数。
int eleCount = driver.findElements(by.xpath("//input")).size() +
driver.findElements(by.xpath("//a")).size() +
driver.findElements(by.xpath("//h1")).size();