java—比较浏览器中两个选项卡的数据 selenium

46qrfjad  于 2021-07-03  发布在  Java
关注(0)|答案(3)|浏览(387)

我有一个价格的第一页上的项目,并点击“查看交易”按钮后,打开第二页的新标签,在第二页上我有与此有关的价格的所有信息。我的主要目的是比较这些价格,但我有一个问题。
这里的方法来自第二页,在这个方法上我有一个例外,没有这样的元素,似乎一个驱动程序没有转移到这个选项卡或页面,如果添加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;
    }
sr4lhrrt

sr4lhrrt1#

我看不出你的代码有任何错误。我认为您使用的是页面对象模型。在您的场景中,尝试使用下面的方法,它应该可以工作。
驱动程序查找(由…);

aydmsdu9

aydmsdu92#

我已经在我的机器上试过了。请在下面找到我的代码。您是否使用了以下功能,但仍然无法使用?

public class testclass {

    public static void main(String[] args) throws InterruptedException {
        WebDriverManager.chromedriver().setup();
        WebDriver driver = new ChromeDriver();

        driver.get("https://www.amazon.co.uk/");

        Thread.sleep(3000);

        WebElement element = driver.findElement(By.xpath("//span[.='Fire TV Stick Lite']"));
        Actions act = new Actions(driver);

        act.keyDown(Keys.CONTROL).click(element).keyUp(Keys.CONTROL).build().perform();
       // driver.get("http://google.com");
        Thread.sleep(3000);

        ArrayList<String> tabs2 = new ArrayList<String> (driver.getWindowHandles());
            driver.switchTo().window(tabs2.get(1));
        System.out.println(driver.getTitle());
        secondtab t = new secondtab(driver);
        t.searchGoogle();
    }
}

package boots.uk.dps.pages.base;

import com.boots.thor.base.ExtendedWebElement;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.support.FindBy;

import java.util.List;

public class secondtab {
    private WebDriver driver;

    public secondtab(WebDriver driver){
        this.driver =  driver;
    }

    public void searchGoogle(){
        driver.findElement(By.xpath("//*[@id='buy-now-button']")).click();
    }
}
lc8prwob

lc8prwob3#

你要得到windows的句柄,它会打开选项卡的句柄,你可以使用下面的代码在选项卡之间切换

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

相关问题