【发布时间】:2017-01-06 14:50:51
【问题描述】:
我正在做一个项目,在这个项目中,我需要检查两个网页。我必须在不同的窗口中同时打开这两个网页并同时检查它们。
必须有两个窗口,并且有一个检查元素状态的功能。但是这个功能必须同时检查它们。我该如何解决这个问题?
谢谢
【问题讨论】:
标签: python selenium window selenium-chromedriver
我正在做一个项目,在这个项目中,我需要检查两个网页。我必须在不同的窗口中同时打开这两个网页并同时检查它们。
必须有两个窗口,并且有一个检查元素状态的功能。但是这个功能必须同时检查它们。我该如何解决这个问题?
谢谢
【问题讨论】:
标签: python selenium window selenium-chromedriver
您一次可以打开多个浏览器:
from selenium import webdriver
driver1 = webdriver.Firefox()
driver2 = webdriver.Firefox()
driver1.get(...)
driver2.get(...)
如果您想要两个窗口进入当前驱动程序会话,您可以使用一点 javascipt 来打开带有单个驱动程序的第二个窗口:
driver.execute_script("$(window.open('http://www.example.com'))")
window1 = driver.window_handles[0]
window2 = driver.window_handles[1]
# test the first window
driver.switch_to_window(window1)
...
# test the second window
driver.switch_to_window(window2)
...
【讨论】:
我不确定是否会在完全同时进行,但您可以在单独的选项卡中打开其中一个页面,然后在两者之间移动以进行比较。
driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL +"t");
ArrayList<String> tabs = new ArrayList<String> (driver.getWindowHandles());
driver.switchTo().window(tabs.get(0));
***get value to compare****
driver.switchTo().window(tabs.get(1));
driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL +"Keys.TAB");
***get second value and compare***
如果没有,也许考虑使用 Selenium Grid 并行运行两个测试。 我只是在写完答案后才发现您正在使用 Python 工作,但我确定有一个等价物。
【讨论】: