页面不会刷新

时间:2017-10-18 13:06:18

标签: java selenium selenium-chromedriver

我正在自动与网站交互以上传文件并下载结果。不经常,但偶尔站点永远不会加载。我收到以下错误。

[302.321][SEVERE]: Timed out receiving message from renderer: 299.536
[302.323][SEVERE]: Timed out receiving message from renderer: -0.003
Exception in thread "main" org.openqa.selenium.TimeoutException: timeout
(Session info: chrome=61.0.3163.100)
(Driver info: chromedriver=2.33.506120 
(e3e53437346286c0bc2d2dc9aa4915ba81d9023f),platform=Windows NT 6.2.9200 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 300.01 seconds

脚本通过if语句使用了负路径和正路径。但是,如果页面上根本没有显示任何内容,则只会失败而不是刷新。

    WebDriver driver = new ChromeDriver();
    WebDriverWait wait = new WebDriverWait(driver, 5);      
    driver.get("http://apps.gdgps.net/apps_file_upload.php");
    System.out.println("test a");

    List<WebElement> upload = driver.findElements(By.cssSelector("input[class*='upfile_ultimo']"));
    if (upload.isEmpty())
    {
        System.out.println("failed");
        wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector("input[id='upload_button']")));
        driver.navigate().refresh();
        System.out.println("next");
        driver.findElement(By.cssSelector("input[class*='upfile_ultimo']")).click();
    }
    else
    {
        upload.get(0).click();
    }

我可以手动刷新页面,然后立即加载并继续。

1 个答案:

答案 0 :(得分:0)

如果页面上没有任何内容,则由于您没有处理异常,脚本将被绑定失败。

以下行会抛出 TimeoutException

wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector("input[id='upload_button']")));

因此,如果您希望在发生异常时继续执行脚本事件,则可以简单地捕获该异常。

    try{
        wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector("input[id='upload_button']")));
    }catch (TimeoutException te){
        System.out.print("Timeout for waiting for element");
    }

但是在您的情况下,最好的解决方案是。

  • 将显式等待时间增加到30 seconds更多

  • 设置页面超时。 driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);