Ubuntu上的Selenium和Firefox:专注于新标签

时间:2017-01-17 16:20:24

标签: selenium firefox selenium-firefoxdriver

我正在使用Ubuntu14.04中的Selenium和Firefox。我通过send_keys(Keys.CONTROL +'t')创建了一个新选项卡,但是在第一个选项卡上继续发出命令,可能是因为我没有正确关注新选项卡。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys

driver =  webdriver.Firefox()
main_window = driver.current_window_handle

driver.get("https://www.google.com")
driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + 't')

driver.switch_to_window(main_window)
driver.get("http://www.bing.com")

driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + 't')

driver.switch_to_window(main_window)
driver.get("https://github.com/login")

运行此代码时没有错误。

我转到google.com后创建一个新标签页,屏幕变为新标签页上的空白页。之后,我编写了driver.switch_to_window(main_window)来专注于新选项卡,以确保新选项卡上会出现下一行代码。但是当执行driver.get(“http://www.bing.com”)时,屏幕将返回到存在google.com的第一个标签页,并将google.com更改为bing.com。下一个代码也一样。创建了另一个新选项卡,但在执行driver.get(“https://github.com/login”)后返回第一个选项卡,bing.com成为github.com/login。

我以为我专注于当前可见的标签

main_window = driver.current_window_handle; driver.switch_to_window(main_window),

但这并没有奏效。 如何在3个不同的标签上加载所有3个网页?

说明:

  • Selenium 3.0.2
  • firefox 45.0.1
  • Ubuntu 14.04 amd 64bit
  • python 2.7.6

1 个答案:

答案 0 :(得分:0)

请尝试以下解决方案,如果不是您真正想要的内容,请告知我们:

driver.get("https://www.google.com")
google_window = driver.current_window_handle # Define main window

driver.execute_script("window.open('http://www.bing.com')") # Open Bing window
bing_window = [window for window in driver.window_handles if window != google_window][0] # Define Bing window

driver.execute_script("window.open('https://github.com/login')") # Open GitHub window
github_window = [window for window in driver.window_handles if window not in [google_window, bing_window]][0] # Define GitHub window

打开所有3个窗口后,您只需导航为:

driver.switch_to_window(bing_window)
...# do something
driver.switch_to_window(google_window)
...# do something
driver.switch_to_window(github_window)