我需要能够等待多个事情中的一个在执行某个操作后可能发生在页面上。这些事情的例子有:URL更改,设置某个标题,页面上的某些内容等等。
这解释了如何等待 - https://github.com/facebook/php-webdriver/wiki/HowTo-Wait。但是,我需要能够同时等待多个事情。一旦出现其中一种情况,我希望等待停止。
有没有办法在等待期间“或”(例如等待URL改变或标题包含“foo”或“bar”出现在页面上,等)?
答案 0 :(得分:4)
在您发布的同一链接中,查找"自定义条件"部分,即:
$driver->wait()->until(
function () use ($driver) {
$elements = $driver->findElements(WebDriverBy::cssSelector('li.foo'));
return count($elements) > 5;
},
'Error locating more than five elements'
);
注意使用" findElements"在代码示例中。如果找不到任何内容,将返回一个空数组。如果必须只显示三个元素中的一个,则执行以下操作:
$driver->wait()->until(
function () use ($driver) {
$elements1 = $driver->findElements(WebDriverBy::cssSelector('li.foo1'));
$elements2 = $driver->findElements(WebDriverBy::cssSelector('li.foo2'));
$elements3 = $driver->findElements(WebDriverBy::cssSelector('li.foo3'));
return count($elements1) + count($elements2) + count($elements3) > 0;
},
'Error locating at least one of the elements'
);