有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

selenium chrome驱动程序中下一个网站url的java空白页

我正在使用selenium框架中的java自动化https://www.cleartrip.com/网站。填写完所有表单详细信息后,当selenium单击“searchBtn”按钮时,将加载一个带有下一页url的空白页。每次刷新时它都保持空白。但是如果我在我的chrome浏览器中复制粘贴最终的网站,结果就会显示出来。这在firefox和chrome驱动程序中都有发生

我还添加了一张图片https://i.stack.imgur.com/VZHPG.png 谁能告诉我我在哪里走错了一步? 谢谢

我的代码如下:

public void formFilling() throws Exception {

        driver.findElement(By.id("OneWay")).click();
        driver.findElement(By.id("FromTag")).sendKeys("Delhi");
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        driver.findElement(By.xpath("//*[contains(text(),'Del') and contains(text(), 'Indira')]")).click();
        driver.findElement(By.id("ToTag")).sendKeys("Hyderabad");
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        driver.findElement(By.xpath("//*[contains(text(),'Hyd') and contains(text(), 'Rajiv')]")).click();
        driver.findElement(By.id("DepartDate")).sendKeys("Fri, 16 Apr,2021");
        driver.findElement(By.xpath("//*[@title=\"More search options\"]")).click();
        Select s = new Select(driver.findElement(By.id("Class")));
        s.selectByVisibleText("Economy");
        driver.findElement(By.id("SearchBtn")).submit();
        driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
        driver.findElement(By.xpath("/html/body/div[1]/div/main/div/div/div[2]/div[2]/div[7]/div[1]/div[3]/a/span")).click();
        driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
        driver.findElement(By.xpath("/html/body/div[1]/div/main/div/div/div[2]/div[2]/div[8]/div[1]/div[1]/div[1]")).click();
        driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
        TakesScreenshot ts = (TakesScreenshot) driver;
        ts.getScreenshotAs(OutputType.FILE);


  [1]: https://i.stack.imgur.com/VZHPG.png

共 (1) 个答案

  1. # 1 楼答案

    你的代码太快了。输入所有值,然后单击搜索按钮,并立即尝试截图

    单击“保存更改”或“提交”按钮后,您需要给浏览器时间刷新数据并加载更新的页面:

    在您的情况下,请执行以下操作:

    driver.findElement(By.id("SearchBtn")).submit();
    Thread.Sleep(5000);
    // continue your test  
    

    如果5秒钟的等待时间不够,则将其升高