根據webdriver.Dispose()、.Close() 和 .Quit() 之間的差異
,關閉所有視窗driver.close的當前活動視窗。我得到的是,如果我在當前視窗中打開一個新選項卡,然后呼叫包括我的選項卡在內的整個視窗將關閉。但是當我運行該代碼時driver.quitdriver.close
driver.get("http://testingpool.com/selenium-ide-part-1/");
driver.findElement(By.xpath("//*[@id='content']/div[2]/article/div/div[2]/div[1]/p[8]/span/a")).click(); //opens a new tab
ArrayList<String> allWindowHandles = new ArrayList<> (driver.getWindowHandles());
driver.close()
只有第一個標簽被關閉。我還發現我的 allWindowHandles 的長度為 2,盡管我只有一個視窗。我試圖按照https://www.tutorialspoint.com/how-to-open-a-new-window-on-a-browser-using-selenium-webdriver-for-python使用Selenium 打開一個新視窗
((JavascriptExecutor)driver).executeScript("window.open('')");
但這導致了一個新選項卡而不是一個新視窗。
如果 Selenium 完全區分選項卡和視窗,我會感到困惑。
uj5u.com熱心網友回復:
在您參考的帖子中,使用用于區分Selenium WebDriver所支持的方法driver.close()和方法的術語,它們實際上主要是指瀏覽器選項卡,而不是視窗。
通過打開一個新的瀏覽器視窗driver.quit()
((JavascriptExecutor)driver).executeScript("window.open('')");
或者通過單擊某些 Web 元素打開一個新的瀏覽器選項卡/視窗,通常會在現有瀏覽器中打開一個新選項卡。
uj5u.com熱心網友回復:
我得到的是,如果我在當前視窗中打開一個新選項卡,然后呼叫
driver.close包括我的選項卡在內的整個視窗將關閉。但是當我運行該代碼時
看到您可能已經通過單擊鏈接或使用打開了一個新選項卡,JavascriptExecutor但 Selenium 仍然專注于第一個視窗的第一個選項卡。
因此,當您這樣做時:
ArrayList<String> allWindowHandles = new ArrayList<> (driver.getWindowHandles());
driver.close()
它應該關閉first tabor window,因為您還沒有切換到新的選項卡/視窗。
我還發現我的 allWindowHandles 的長度為 2
這是因為您使用此行打開了一個新選項卡
driver.findElement(By.xpath("//*[@id='content']/div[2]/article/div/div[2]/div[1]/p[8]/span/a")).click(); //opens a new tab
當您通過單擊鏈接或使用打開新選項卡時JavascriptExecutor,您將擁有 1 windows handle.
但是,如果您不切換到任何選項卡或視窗。Selenium 將始終關注第一個視窗的第一個選項卡。
另外,window.open('')Js 命令不是 Selenium。
新選項卡或視窗之間存在差異。但是如果你考慮到 Selenium,我們以同樣的方式切換到新的選項卡或視窗。
但是,要打開一個新視窗,您必須模擬CTRL N鍵盤操作。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/436004.html
