我想在Python中使用selenium在一个浏览器中打开多标签,并使用多标签同时抓取实时投注赔率。
网站首页生成一系列游戏。但是,除非你找到游戏元素并使用click()(网站是ajax重),否则无法获得游戏链接,这会在同一个标签中打开游戏。我打开多标签的解决方案是获取游戏列表,然后手动打开首页加载主页的新标签,然后点击列表中不同索引的游戏。但是,我发现 c.StockCode = l.OemNumberPrevious
数组始终只包含一个项,这是当前选项卡,而不是我在浏览器中手动打开的所有选项卡。
有人可以告诉我出了什么问题,或者你是否可以为这个问题提供更好的解决方案?
问题简化为以下代码:
driver.window_handles
我打开了3个标签,但是len(driver_temp.window_handles)总是1
答案 0 :(得分:4)
Selenium不提供操作浏览器标签的API 。您可能已经注意到应用CTRL/COMMAND+T
" hack"打开一个新标签。
详见:
相反,请打开新的浏览器窗口。
嗯,公平地说,重要的是要提到Firefox和Chrome中的行为完全不同 - 如果您在Chrome中打开新标签页,selenium会将每个标签视为一个窗口,并带有它自己的句柄并且您可以轻松地使用switch_to.window()
在它们之间切换。