java - 比较浏览器中两个选项卡的数据。硒
问题描述
我在第一页上有价格的商品,然后单击“查看交易”按钮,打开带有第二页的新标签,在第二页上我有关于此价格的所有信息。我的主要目标是比较这些价格,但我对此有疑问。
这里方法从第二页和这个方法我有例外没有这样的元素,似乎驱动程序没有转移到这个选项卡或页面,如果添加 driver.switchTo().window(tabs.get(1 )); 然后我有空指针异常
`public int parsePriceOnProductPage(){
// driver.switchTo().window(tabs.get(1));
wait.until(ExpectedConditions.elementToBeClickable(bookNowBtn));
String offerPriceValue = offerPriceProductPage.toString();
String onlyNumbers = offerPriceValue.replaceAll("[^\\d]", "");
int offerPrice_val = Integer.parseInt(onlyNumbers);
return offerPrice_val;
}`
这是第一页测试中的前一个方法,这里我将驱动程序发送到第二页
`public ProductPage clickOnDeal(){
viewDealBtn.get(1).click();
return new ProductPage(driver,wait);
}`
在这里我比较这个价格
public boolean comparePriceOnHomePageWithProductPage(){
if(homePage.parsePriceFromSelectedDealOnHomePage() == productPage.parsePriceOnProductPage()){
return true;
}else if (homePage.parsePriceFromSelectedDealOnHomePage() > productPage.parsePriceOnProductPage()){
System.out.println("The price on the Home Page more than on the Product Page on the $"+ (homePage.parsePriceFromSelectedDealOnHomePage() - productPage.parsePriceOnProductPage()) );
} else {
System.out.println("The price on the Home Page less than on the Product Page on the $"+ (productPage.parsePriceOnProductPage() - homePage.parsePriceFromSelectedDealOnHomePage()) );
} return false;
}
解决方案
你必须得到windows句柄,它将打开标签的句柄,你可以使用下面的代码在标签之间切换
ArrayList<String> tabs2 = new ArrayList<String> (driver.getWindowHandles());
driver.switchTo().window(tabs2.get(1));
driver.switchTo().window(tabs2.get(0));
driver.close();
推荐阅读
- flutter - 如何阻塞直到异步函数完成
- c# - 如何使用 C#8 IAsyncEnumerable
异步枚举任务并行运行 - c++ - 在 PCL 中使用 KinfuLS 包时出现的问题如何解决?
- java - 如何专门在firebase中获取用户数据
- karate - 空手道 API 如何捕获响应值以作为请求传递给另一个 API
- odoo - 如果订单行中的所有复选框都为真,则将复选框设置为真
- javascript - addEventListener 不会在 javascript 中触发
- javascript - ReactJS:无法正确识别图像 src
- java - 在图中查找顶点对的数量,使得它们之间的路径只有一个与不同给定路径共有的顶点
- java - 当您不知道文件的位置时,如何从文件中读取?