Ubuntu上的Selenium和Firefox:关注新标签
我正在Ubuntu14.04中开发Selenium和Firefox。我通过send_keys(keys.CONTROL+'t')创建了一个新的选项卡,但在第一个选项卡上不断发出命令,可能是因为我没有正确地关注新选项卡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
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
,切换到它,处理该页面上的所有内容。。。有什么问题吗?我不明白:)