2017-06-17 79 views
1

我需要能夠等待多個事件之一,在採取某個操作後可能發生在頁面上。這些東西的例子是:URL更改,設置某個標題,頁面上出現某些內容等。硒 - 如何等待?

這說明了如何等待 - https://github.com/facebook/php-webdriver/wiki/HowTo-Wait。但是,我需要能夠同時等待多件事情。我希望等待一旦發生其中一種情況就停止。

有沒有一種方法來「或」等待期間(例如等待URL改變OR標題中包含「富」 OR「欄」頁面上出現,等等)?

回答

3

在您發佈相同的鏈接,查找「自定義條件」部分,即:

$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) > 1; 
    }, 
    'Error locating more than five elements' 
);