org.openqa.selenium
中)中的Get命令加载了页面。我的问题是,Selenium的页面加载默认超时是多少?#1 楼
超时的默认WebDriver
设置为永不。 WebDriver
将永远坐在那里等待页面加载。以下超时可用:
/**
* An interface for managing timeout behavior for WebDriver instances.
*/
interface Timeouts {
/**
* Specifies the amount of time the driver should wait when searching for an element if it is
* not immediately present.
* <p/>
* When searching for a single element, the driver should poll the page until the element has
* been found, or this timeout expires before throwing a {@link NoSuchElementException}. When
* searching for multiple elements, the driver should poll the page until at least one element
* has been found or this timeout has expired.
* <p/>
* Increasing the implicit wait timeout should be used judiciously as it will have an adverse
* effect on test run time, especially when used with slower location strategies like XPath.
*
* @param time The amount of time to wait.
* @param unit The unit of measure for {@code time}.
* @return A self reference.
*/
Timeouts implicitlyWait(long time, TimeUnit unit);
/**
* Sets the amount of time to wait for an asynchronous script to finish execution before
* throwing an error. If the timeout is negative, then the script will be allowed to run
* indefinitely.
*
* @param time The timeout value.
* @param unit The unit of time.
* @return A self reference.
* @see JavascriptExecutor#executeAsyncScript(String, Object...)
*/
Timeouts setScriptTimeout(long time, TimeUnit unit);
/**
* Sets the amount of time to wait for a page load to complete before throwing an error.
* If the timeout is negative, page loads can be indefinite.
*
* @param time The timeout value.
* @param unit The unit of time.
* @return
*/
Timeouts pageLoadTimeout(long time, TimeUnit unit);
}
您可以通过设置来调整超时
driver.manage().timeouts().pageLoadTimeout()
更多信息在这里:
Selenium Wiki
更新:更新了过时的Wiki URL
评论
有3种超时。页面加载超时!=隐式等待超时。默认情况下,页面加载超时是受限制的。我希望我可以对此答案投反对票
–安德烈·波塔洛夫(Andrei Botalov)
13年4月8日在12:13
您的权利,我已经隐式地将页面加载超时等了,这是更新答案的时间。
– Ardesco
13年4月8日在14:05
这个答案是不正确的。
– Corey Goldberg
15/12/27在15:22
#2 楼
显然有超时。它长30分钟。SEVERE: Timed out waiting for page load.
Command duration or timeout: 1800.01 seconds
Build info: version: '2.40.0', revision: 'fbe29a9', time: '2014-02-19 20:55:11'
System info: host: 'PurpleMimosa.local', ip: '10.11.11.131', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.9.2', java.version: '1.7.0_51'
Session ID: 11e6b0f4-15f2-7d48-8dbc-2176def7e41f
Driver info: org.openqa.selenium.firefox.FirefoxDriver
Capabilities [{platform=MAC, acceptSslCerts=true, javascriptEnabled=true, cssSelectorsEnabled=true, databaseEnabled=true, browserName=firefox, handlesAlerts=true, browserConnectionEnabled=true, webStorageEnabled=true, nativeEvents=false, rotatable=false, locationContextEnabled=true, applicationCacheEnabled=true, takesScreenshot=true, version=29.0.1}]
评论
欢迎来到Plastiq SQA!其他许多人说默认情况下没有超时,但是您可以设置一个。您能否详细说明如何制作此代码,以及如何显示未设置超时(因此是默认设置)?
–corsiKa♦
2014年5月22日在22:24
@corsiKa:显然其他人也被误导了……单击链接等待了30分钟以上的加载之后,我也获得了超时。如何产生这个?如何显示未设置超时?从全新安装开始,不要手动设置超时,而是尝试加载一个小时的页面。简单! :)
–达伦·林格(Darren Ringer)
2015年9月21日在19:27
#3 楼
欢迎来到赛克里希纳SQA。根据StackOverflow问题,超时为30秒。评论
您可以使用以下Java代码修改该值:driver.manage()。timeouts()。implicitlyWait(10,TimeUnit.SECONDS);
–斯科特
2012年2月8日在20:05
默认的30秒超时是Selenium RC API,而不是WebDriver。
– Ardesco
2012年2月9日在12:20
#4 楼
正如其他人所说,没有超时。但是,建议的
ImplicitlyWait()
实际上是要显示页面元素。对于页面加载,您想设置“页面加载”超时。然后,这将在几毫秒后中断get()
调用。如果使用Java,则使用
setScriptTimeout()
。如果使用PHP,我将此函数添加到
WebDriver.php
,它对我有用:/**
* Set wait for a page to load.
*
* @param Number $waitTimeout Number of milliseconds to wait.
*/
public function setPageLoadTimeout($waitTimeout) {
$request = $this->requestURL . "/timeouts";
$session = $this->curlInit($request);
$args = array('type'=>'page load', 'ms' => $waitTimeout);
$jsonData = json_encode($args);
$this->preparePOST($session, $jsonData);
curl_exec($session);
}
参考:http://code.google.com/p/selenium/wiki/JsonWireProtocol#/session/:sessionId/超时
评论
对不起,编辑;根据您的建议修改了代码。
–巴拉特鬃毛
17年9月14日在8:40
评论
您是否要问硒加载页面通常需要多长时间?是的,确切的说,页面加载的默认时间是多少?在Api中,说明了get方法被阻塞,直到加载完成,如果页面未加载,它不会引发任何异常
那不取决于页面上的内容吗? “ hello world”页面的加载速度将比其上包含1000个元素的页面的加载速度更快。
如果未在特定的时间限制内加载该页面,则应抛出一些异常,该页面的默认加载时间是什么?如果在默认时间内未加载该页面,则它将抛出任何异常,例如TimeoutException