Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Selenium Webdriver PHPUnit:是否可以等待整个函数而不是元素?_Php_Selenium - Fatal编程技术网

Selenium Webdriver PHPUnit:是否可以等待整个函数而不是元素?

Selenium Webdriver PHPUnit:是否可以等待整个函数而不是元素?,php,selenium,Php,Selenium,所以有很多方法可以让selenium等待,比如 sleep(1); // sleeps for 1 second 或 或 等等。。。 这些都是针对特定元素的,但是否可以创建一个脚本,让selenium在任何情况下都等待每个元素?或者页面加载等等 因此,基本上它将适用于整个函数,而不仅仅是您正在寻找的当前元素。如果您在一个页面或多个页面上搜索50多个项目,我宁愿让selenium等待每个页面加载/元素,在每个搜索waitForPageElement之后写入 这可能吗?所有元素都有隐式等待: fu

所以有很多方法可以让selenium等待,比如

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;
}