python selenium 如何实现对新建选项卡( tab)的操作?

2016-04-02 10:45:35 +08:00
 zmrenwu

我现在有这样一个需求: 在一个浏览器窗口打开 n 个选项卡,然后让这 n 个选项卡打开同一个 url 并且不停地随机定位这 n 个选项卡中任意一个的某些元素,该如何实现?根据各种 google ,百度等的参考资料,我写了下面代码:

url = r'xxxxxxx'
driver = webdriver.Firefox()
driver.get(url)

此时创建了第一个浏览器窗口,然后我用下面的方法新建选项卡:

driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + 't')

但是,这样新建的选项卡没有 handle ,没法 switch_to 这个选项卡,即使使用

driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + '\t')

做强制切换,也没法通过 find 等方法定位这个选项卡里面的标签元素。

有没有比较完美的解决方案?还是说 selenium 对选项卡操作不够支持?恳请大神指点。

10900 次点击
所在节点    Python
4 条回复
13k
2016-04-05 22:50:31 +08:00
driver.window_handles 返回 tab 列表
然后 driver.switch_to_window 切换到对应的 tab
zmrenwu
2016-04-06 08:55:42 +08:00
@13k 获取不到,由于只开了一个窗口,只能返回一个 handle
13k
2016-04-06 10:37:07 +08:00
@zmrenwu 搞错, Chromedriver 可以, Firefox 没测
zmrenwu
2016-04-06 12:44:39 +08:00
@13k 谢谢!我回去换用 chrome 测试一下!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/268087

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX