0

处理driver->get(URL)页面加载缓慢的最佳方法是什么?

我基本上有一个最多运行 3 次的 for 循环。在那个循环中,我有一个try/catch block. In the try block, it loads the page with get OR

wait()->until(WebDriverExpectedCondition::presenceOfElementLocated(WebDriverBy::xPath("//body")));

如果 get 或 wait 不起作用,则页面刷新或执行相同的 get 命令。

这真的是最好的方法吗?想问问大家是怎么处理的?无法正确加载的页面似乎是我的脚本经常无法完全执行的主要原因之一。

4

1 回答 1

0

BODY的presentOfElementLocated ()无法确保页面是否已完全加载

缓慢页面加载的理想解决方案是通过块设置pageLoadTimeout()try-catch{},如下所示:

WebDriver driver = new FirefoxDriver();
driver.manage().timeouts().pageLoadTimeout(2, TimeUnit.SECONDS);
try {
    driver.get("https://www.booking.com/hotel/in/the-taj-mahal-palace-tower.html?label=gen173nr-1FCAEoggJCAlhYSDNiBW5vcmVmaGyIAQGYATG4AQbIAQzYAQHoAQH4AQKSAgF5qAID;sid=338ad58d8e83c71e6aa78c67a2996616;dest_id=-2092174;dest_type=city;dist=0;group_adults=2;hip_dst=1;hpos=1;room1=A%2CA;sb_price_type=total;srfid=ccd41231d2f37b82d695970f081412152a59586aX1;srpvid=c71751e539ea01ce;type=total;ucfs=1&#hotelTmpl");
} catch (TimeoutException e) {
    System.out.println("TimeoutException occurred. Quiting the program.");
}
driver.quit();

参考

您可以在pageLoadTimeout()中找到一些相关的详细讨论:

于 2021-12-11T23:34:48.187 回答