<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                > web的自動化測試中,我們經常會遇到這樣一種情況:當我們的程序執行時需要頁面某個元素,而此時這個元素還未加載完成,這時我們的程序就會報錯。怎么辦?等待。等待元素出現后再進行對這個元素的操作。 在selenium-webdriver中我們用兩種方式進行等待:明確的等待和隱性的等待。 [TOC] #### 明確的等待 >明確的等待是指在代碼進行下一步操作之前等待某一個條件的發生。最不好的情況是使用sleep()去設置一段確認的時間去等待。但為什么說最不好呢?因為一個元素的加載時間有長有短,你在設置sleep的時間之前要自己把握長短,太短容易超時,太長浪費時間。selenium webdriver提供了一些方法幫助我們等待正好需要等待的時間,比如以下例子中我們設置的最長等待時間為15秒。 ~~~ <?php namespace Facebook\WebDriver; use Facebook\WebDriver\Remote\DesiredCapabilities; use Facebook\WebDriver\Remote\RemoteWebDriver; require_once('vendor/autoload.php'); header("Content-Type: text/html; charset=UTF-8"); // start Firefox with 5 second timeout $host = 'http://localhost:4444/wd/hub'; // this is the default $waitSeconds = 15; //需等待加載的時間,一般加載時間在0-15秒,如果超過15秒,報錯。 $capabilities = DesiredCapabilities::chrome(); $driver = RemoteWebDriver::create($host, $capabilities, 5000); $driver->get('https://www.baidu.com/'); //由于下拉框是通過點擊“搜索設置”按鈕觸發JS動態生成的DOM,所以這里使用Wait for new element to appear方式,不然直接調用查找元素會報錯,說找不到元素 $driver->wait($waitSeconds)->until( WebDriverExpectedCondition::visibilityOfElementLocated( WebDriverBy::id('kw') ) ); $driver->findElement(WebDriverBy::id('kw'))->sendKeys('wwe'); echo 'done!'; //關閉瀏覽器 //$driver->quit(); ?> ~~~ #### 隱性等待 > 隱性等待是指當要查找元素,而這個元素沒有馬上出現時,告訴WebDriver查詢Dom一定時間。默認值是0,但是設置之后,這個時間將在WebDriver對象實例整個生命周期都起作用。上面的代碼就變成了這樣: ~~~ <?php namespace Facebook\WebDriver; use Facebook\WebDriver\Remote\DesiredCapabilities; use Facebook\WebDriver\Remote\RemoteWebDriver; require_once('vendor/autoload.php'); header("Content-Type: text/html; charset=UTF-8"); // start Firefox with 5 second timeout $host = 'http://localhost:4444/wd/hub'; // this is the default $capabilities = DesiredCapabilities::chrome(); $driver = RemoteWebDriver::create($host, $capabilities, 5000); $driver->manage()->timeouts()->implicitlyWait(15); //隱性設置15秒 $driver->get('https://www.baidu.com/'); $driver->findElement(WebDriverBy::id('kw'))->sendKeys('wwe'); echo 'done!'; //關閉瀏覽器 //$driver->quit(); ?> ~~~ >兩者選其一,第二種看起來比較一勞永逸。 如果一個無素沒有出現都會默認等待你所設定的時間,直到超時或者元素出現
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看