Ubuntu上的Selenium和Firefox:关注新标签

Ubuntu上的Selenium和Firefox:关注新标签,selenium,firefox,selenium-firefoxdriver,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 selen

我正在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_到_窗口(main_窗口)来关注新选项卡,以确保下一行代码将出现在新选项卡上。但当driver.get(“”)被执行时,屏幕返回到google.com所在的第一个选项卡,并将google.com更改为bing.com。下一个代码也是这样。创建了另一个新选项卡,但返回到第一个选项卡作为driver.get(“”)执行,bing.com成为github.com/login

我以为我把重点放在了当前的可视选项卡上

main\u window=driver.current\u window\u handle;驾驶员。切换至车窗(主车窗)

但这并不奏效。 如何在3个不同的选项卡上加载所有3个网页

规格:

  • 硒3.0.2
  • 火狐45.0.1
  • Ubuntu 14.04 amd 64位
  • python 2.7.6

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

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)

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

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)

这不是我要找的。我想创建选项卡,并将重点放在新选项卡上。你的答案是创建Firefox的新窗口并在它们之间切换。你说的“将焦点放在新选项卡上”是什么意思?为什么呢?“切换”到新标签意味着“关注”它。。。对吧?不完全是。在Selenium中,即使切换到一个新选项卡,如果将注意力集中在新选项卡上,您也可能无法执行任何操作。据我所知,转换和聚焦是不同的。请参阅上的代码。有一条评论说#将焦点放在当前窗口上,这实际上会将焦点放在当前可见选项卡->浏览器上。将#切换到#窗口(主#窗口)SOOO<代码>浏览器。切换到窗口(主窗口)!切换到窗口!开关!:)这是关注新窗口!这正是我的代码所做的:您在新选项卡中打开
URL
,切换到它,处理该页面上的所有内容。。。有什么问题吗?我不明白:)这不是我要找的。我想创建选项卡,并将重点放在新选项卡上。你的答案是创建Firefox的新窗口并在它们之间切换。你说的“将焦点放在新选项卡上”是什么意思?为什么呢?“切换”到新标签意味着“关注”它。。。对吧?不完全是。在Selenium中,即使切换到一个新选项卡,如果将注意力集中在新选项卡上,您也可能无法执行任何操作。据我所知,转换和聚焦是不同的。请参阅上的代码。有一条评论说#将焦点放在当前窗口上,这实际上会将焦点放在当前可见选项卡->浏览器上。将#切换到#窗口(主#窗口)SOOO<代码>浏览器。切换到窗口(主窗口)!切换到窗口!开关!:)这是关注新窗口!这正是我的代码所做的:您在新选项卡中打开
URL
,切换到它,处理该页面上的所有内容。。。有什么问题吗?我不明白:)