Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python使用selenium切换浏览器焦点_Python_Macos_Selenium_Selenium Webdriver - Fatal编程技术网

Python使用selenium切换浏览器焦点

Python使用selenium切换浏览器焦点,python,macos,selenium,selenium-webdriver,Python,Macos,Selenium,Selenium Webdriver,我期待着打开不同网站的多个浏览器,并浏览这些浏览器。我已经编写了打开初始浏览器并自由导航的代码。但是,当我打开第二个选项卡并命令它获取新站点时,它会将第一个浏览器(最初的Safari“选项卡”)更改为新站点 缩短代码示例: from selenium import webdriver from selenium.webdriver.common.keys import Keys browser = webdriver.Safari() browser.get('https://twitter

我期待着打开不同网站的多个浏览器,并浏览这些浏览器。我已经编写了打开初始浏览器并自由导航的代码。但是,当我打开第二个选项卡并命令它获取新站点时,它会将第一个浏览器(最初的Safari“选项卡”)更改为新站点

缩短代码示例:

from selenium import webdriver
from selenium.webdriver.common.keys import 
Keys

browser = webdriver.Safari()
browser.get('https://twitter.com')

browser.find_element_by_tag_name('body').
send_keys(Keys.Command+'t')   


browser.get('https://facebook.com')
此时,“推特标签(第一个标签)”变为facebook,而第二个标签(明显在前面的标签)保持空白


如何让web驱动程序控制第二个选项卡?

您可以按如下方式在浏览器选项卡/窗口之间切换:

for handle in browser.window_handles:
    browser.switch_to_window(handle)

尝试等待第二个选项卡具有句柄

browser.find_element_by_tag_name('body').send_keys(Keys.Command+'t')   

WebDriverWait(browser, 5).until(
    lambda b: len(b.window_handles) != 1
)
# switch to second tab
browser.switch_to_window(browser.window_handles[1]) # or [-1] for latest tab
browser.get('https://facebook.com')

browser.switch_to_window(browser.window_handles[1])#或[-1]以获取最新选项卡。#这一行的一个变体似乎可以实现此目的。感谢您的帮助!