python - Python 用 selenium 切换浏览器焦点
问题描述
我希望打开具有不同站点的多个浏览器,并浏览这些浏览器。我已经编写了代码来打开初始浏览器并自由导航。但是,当我打开第二个选项卡并命令它获取新站点时,它会将第一个浏览器(初始 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')
此时,“twitter 选项卡(第一个选项卡)”更改为 facebook,而第二个选项卡(明显位于前面的选项卡)保持空置。
如何让网络驱动程序控制第二个选项卡?
解决方案
尝试等到第二个选项卡有句柄
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')
推荐阅读
- java - 为什么我的清除字符串 onClick 不起作用
- python - 删除类的对象及其所有引用
- python - 如何自动运行所有 django-crontab 作业?
- sql-server - 如何将此sql查询更改为派生表?
- javascript - 使用 vannila javascirpt 制作响应式导航栏
- php - 我没有在 PHP 中的 for 循环中获取 $j 值
- unix - 给定一个纪元,找到它之前 n 年日期的纪元(数学上)
- mongoose - 无法读取未定义的属性“连接”-nestjs/mongoose
- javascript - 为什么从 fetch 函数返回的对象是它之外的函数?
- javascript - 按包含的前缀过滤数组