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

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ### 彈窗與frame的定位與控制 * * * * * > 對于web應用,經常會出現框架(frame) 或窗口(window)的應用,這也就給我們的定位帶來了一個難題。有時候我們定位一個元素,定位器沒有問題,但一直定位不了,這時候就要檢查這個元素是否在一個frame中,seelnium webdriver 提供了這樣的方法,可以很輕松的來解決這個問題。 >* $driver->switchTo()->frame("id") >* $driver->switchTo()->window("id") >* $driver->switchTo()->alert() [TOC] #### frame示例腳本 ~~~ <?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://v.qq.com/x/cover/e7hi6lep1yc51ca.html?vid=h0018p9ihom'); echo $driver->getCurrentURL().'\r\n'; //將頁面滾動條拖到底部 //因為這個頁面默認打開的時候,"評論區"的iframe沒有渲染到DOM里,騰訊做的處理是拖動到底部的時候用JS動態渲染,所以我們需要控制瀏覽器滾動至底部 $js = "window.scrollBy(0,100000000);"; $driver->executeScript($js); sleep(3); #再找到其下面的 iframe(id=commentIframe) $driver->switchTo()->frame("commentIframe"); $str = $driver->getPageSource(); //將獲取到的影評數據保存再本地,再測試是否正確。 $myfile = fopen("d://newfile.html", "w") or die("Unable to open file!"); fwrite($myfile, $str); fclose($myfile); echo 'done!'; //關閉瀏覽器 $driver->quit(); ?> ~~~ #### alert示例腳本 ~~~ <?php //~~~以上代碼省略... $driver->switchTo()->alert()->accept(); //獲取到confim alert,并且點擊同意 $driver->switchTo()->alert()->dismiss(); //取消 $driver->switchTo()->alert()->getText(); //獲取alert彈出的提示內容 ?> ~~~ > 我們以百度的頁面為例來演示一下功能。 > 1.點擊百度的設置 > 2.選擇"每天顯示多少條"的下拉框 (這個順便把“元素操作”文章中的“select”元素章節也演示了) > 3.點擊保存設置按鈕:會彈出一個alert彈窗 > 4.執行點擊alert的確定按鈕 > 5.試一下搜索的結果是否變化,操作完畢 ~~~ <?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/'); $driver->findElement(WebDriverBy::linkText('設置'))->click(); $driver->findElement(WebDriverBy::linkText('搜索設置'))->click(); $warpper = $driver->findElement(WebDriverBy::id('wrapper')); //由于下拉框是通過點擊“搜索設置”按鈕觸發JS動態生成的DOM,所以這里使用Wait for new element to appear方式,不然直接調用查找元素會報錯,說找不到元素 $driver->wait($waitSeconds)->until( WebDriverExpectedCondition::visibilityOfElementLocated( WebDriverBy::id('nr') ) ); $selectDom = $warpper->findElement(WebDriverBy::id('nr')); $select = new WebDriverSelect($selectDom); $select->selectByValue(10); //由于下拉框是通過點擊“搜索設置”按鈕觸發JS動態生成的DOM,所以這里使用Wait for new element to appear方式,不然直接調用查找元素會報錯,說找不到元素 $driver->wait($waitSeconds)->until( WebDriverExpectedCondition::visibilityOfElementLocated( WebDriverBy::linkText('保存設置') ) ); $driver->findElement(WebDriverBy::linkText('保存設置'))->click(); sleep(2); $driver->switchTo()->alert()->accept(); $driver->findElement(WebDriverBy::id("kw"))->sendKeys('wwe'); $driver->findElement(WebDriverBy::id("su"))->click(); echo 'done!'; //關閉瀏覽器 //$driver->quit(); ?> ~~~ #### window彈窗 示例腳本 ~~~ //$driver->switchTo()->window("id"),用法與 frame 相同。 ~~~
                  <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>

                              哎呀哎呀视频在线观看