首页 > 解决方案 > 比较浏览器中两个选项卡的数据。硒

问题描述

我在第一页上有价格的商品,然后单击“查看交易”按钮,打开带有第二页的新标签,在第二页上我有关于此价格的所有信息。我的主要目标是比较这些价格,但我对此有疑问。

这里方法从第二页和这个方法我有例外没有这样的元素,似乎驱动程序没有转移到这个选项卡或页面,如果添加 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;
    }

标签: javaseleniumselenium-webdriverwebdriver

解决方案


你必须得到windows句柄,它将打开标签的句柄,你可以使用下面的代码在标签之间切换

    ArrayList<String> tabs2 = new ArrayList<String> (driver.getWindowHandles());
    driver.switchTo().window(tabs2.get(1));
    driver.switchTo().window(tabs2.get(0));
    driver.close();

推荐阅读