我正在使用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个网页?
说明:
答案 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)