Selenium Webdriver PHPUnit:是否可以等待整个函数而不是元素?
所以有很多方法可以让selenium等待,比如Selenium Webdriver PHPUnit:是否可以等待整个函数而不是元素?,php,selenium,Php,Selenium,所以有很多方法可以让selenium等待,比如 sleep(1); // sleeps for 1 second 或 或 等等。。。 这些都是针对特定元素的,但是否可以创建一个脚本,让selenium在任何情况下都等待每个元素?或者页面加载等等 因此,基本上它将适用于整个函数,而不仅仅是您正在寻找的当前元素。如果您在一个页面或多个页面上搜索50多个项目,我宁愿让selenium等待每个页面加载/元素,在每个搜索waitForPageElement之后写入 这可能吗?所有元素都有隐式等待: fu
sleep(1); // sleeps for 1 second
或
或
等等。。。
这些都是针对特定元素的,但是否可以创建一个脚本,让selenium在任何情况下都等待每个元素?或者页面加载等等
因此,基本上它将适用于整个函数,而不仅仅是您正在寻找的当前元素。如果您在一个页面或多个页面上搜索50多个项目,我宁愿让selenium等待每个页面加载/元素,在每个搜索waitForPageElement之后写入
这可能吗?所有元素都有隐式等待:
function setUpPage() {
$this->timeouts()->implicitWait(25000);
}
:
隐式等待是告诉WebDriver轮询DOM一段时间
尝试查找一个或多个元素(如果有)的时间量
目前还没有。默认设置为0。一旦设置,则
为WebDriver对象实例的生命周期设置隐式等待
此外,您始终可以编写一个等待每个元素的新函数,并使用它代替默认方法
protected function _waitAndFind($selector) {
$element = $this->waitUntil(function($testCase) use ($selector) {
try {
$element = $testCase->_byQuery($selector);
if ($element->displayed()) {
return $element;
}
} catch (PHPUnit_Extensions_Selenium2TestCase_WebDriverException $e) {}
}, 8000);
return $element;
}
如果可能的话,我会避免等待<代码>隐式等待将使我们更容易编写错误代码。例如,它允许我们编写不处理竞争条件的代码。@whhone除了隐式等待之外,您还有什么建议?
function setUpPage() {
$this->timeouts()->implicitWait(25000);
}
protected function _waitAndFind($selector) {
$element = $this->waitUntil(function($testCase) use ($selector) {
try {
$element = $testCase->_byQuery($selector);
if ($element->displayed()) {
return $element;
}
} catch (PHPUnit_Extensions_Selenium2TestCase_WebDriverException $e) {}
}, 8000);
return $element;
}