Windows 与 Selenium 中的选项卡
Windows vs tabs in Selenium
根据Difference between webdriver.Dispose(), .Close() and .Quit()
driver.close
关闭当前活动 window,其中 driver.quit
关闭所有 windows。我得到的是,如果我在当前 window 中打开一个新选项卡,然后调用 driver.close
,整个 windows 包括我的选项卡都会关闭。但是当我 运行 那个代码
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,尽管我只有一个 window。
我试图按照 https://www.tutorialspoint.com/how-to-open-a-new-window-on-a-browser-using-selenium-webdriver-for-python 使用
使用 Selenium 打开一个新的 window
((JavascriptExecutor)driver).executeScript("window.open('')");
但这导致新标签页不是新标签页 window。
如果 Selenium 完全区分制表符和 window,我感到很困惑。
使用post you are referencing to中Selenium WebDriver支持的driver.close()
和driver.quit()
方法区分的术语,它们实际上主要是指浏览器 选项卡 ,而不是 windows.
通过打开新浏览器 window 和
((JavascriptExecutor)driver).executeScript("window.open('')");
或通过单击某些 Web 元素打开新浏览器 tab/window 通常会在现有浏览器中打开新的 选项卡。
What I get is if I opened a new tab in my current window and then
called driver.close
the whole window including my tabs would close.
But when I run that code
您可能已经通过单击 link 或使用 JavascriptExecutor
打开了一个新选项卡 ,但 Selenium 仍然关注第一个 window.
因此,当您这样做时:
ArrayList<String> allWindowHandles = new ArrayList<> (driver.getWindowHandles());
driver.close()
它应该关闭 first tab
或 window
,因为您还没有切换到新的 tab/window。
Also I find that my allWindowHandles has length of 2
这是因为您使用此行打开了一个新标签页
driver.findElement(By.xpath("//*[@id='content']/div[2]/article/div/div[2]/div[1]/p[8]/span/a")).click(); //opens a new tab
当您通过单击 link 或使用 JavascriptExecutor
打开新选项卡 时,您将看到 +1 windows handle
。
但是,如果您不切换到任何选项卡或 window/s。 Selenium 将始终关注第一个 window.
的第一个选项卡
此外,window.open('')
是 Js 命令而不是 Selenium。
新选项卡或 windows 之间存在差异。但是,如果您考虑到 Selenium,我们将以相同的方式切换到新选项卡或 windows。
但是要打开一个新的 window,您必须模拟 CTRL+N
键盘操作。
根据Difference between webdriver.Dispose(), .Close() and .Quit()
driver.close
关闭当前活动 window,其中 driver.quit
关闭所有 windows。我得到的是,如果我在当前 window 中打开一个新选项卡,然后调用 driver.close
,整个 windows 包括我的选项卡都会关闭。但是当我 运行 那个代码
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,尽管我只有一个 window。 我试图按照 https://www.tutorialspoint.com/how-to-open-a-new-window-on-a-browser-using-selenium-webdriver-for-python 使用
使用 Selenium 打开一个新的 window((JavascriptExecutor)driver).executeScript("window.open('')");
但这导致新标签页不是新标签页 window。
如果 Selenium 完全区分制表符和 window,我感到很困惑。
使用post you are referencing to中Selenium WebDriver支持的driver.close()
和driver.quit()
方法区分的术语,它们实际上主要是指浏览器 选项卡 ,而不是 windows.
通过打开新浏览器 window 和
((JavascriptExecutor)driver).executeScript("window.open('')");
或通过单击某些 Web 元素打开新浏览器 tab/window 通常会在现有浏览器中打开新的 选项卡。
What I get is if I opened a new tab in my current window and then called
driver.close
the whole window including my tabs would close. But when I run that code
您可能已经通过单击 link 或使用 JavascriptExecutor
打开了一个新选项卡 ,但 Selenium 仍然关注第一个 window.
因此,当您这样做时:
ArrayList<String> allWindowHandles = new ArrayList<> (driver.getWindowHandles());
driver.close()
它应该关闭 first tab
或 window
,因为您还没有切换到新的 tab/window。
Also I find that my allWindowHandles has length of 2
这是因为您使用此行打开了一个新标签页
driver.findElement(By.xpath("//*[@id='content']/div[2]/article/div/div[2]/div[1]/p[8]/span/a")).click(); //opens a new tab
当您通过单击 link 或使用 JavascriptExecutor
打开新选项卡 时,您将看到 +1 windows handle
。
但是,如果您不切换到任何选项卡或 window/s。 Selenium 将始终关注第一个 window.
的第一个选项卡此外,window.open('')
是 Js 命令而不是 Selenium。
新选项卡或 windows 之间存在差异。但是,如果您考虑到 Selenium,我们将以相同的方式切换到新选项卡或 windows。
但是要打开一个新的 window,您必须模拟 CTRL+N
键盘操作。