gpt4 book ai didi

python - 使用 Python 打开新窗口时,selenium window_handles 不正确

转载 作者:太空狗 更新时间:2023-10-30 03:00:11 24 4
gpt4 key购买 nike

我想将 selenium 与 Python 结合使用,在一个浏览器中打开多选项卡,并同时通过多选项卡抓取实时投注赔率。

网站主页生成游戏列表。但是,除非找到游戏元素并使用 click()(该网站是 ajax 重),否则无法获得游戏链接,这会在同一选项卡中打开游戏。我打开多标签的解决方案是获取游戏列表,然后手动打开新标签,首先加载主页,然后单击列表中具有不同索引的游戏。但是,我发现 driver.window_handles 数组总是只包含一项,这是当前选项卡,而不是我在浏览器中手动打开的所有选项卡。

谁能告诉我哪里出了问题,或者您是否可以提供更好的解决方案?

问题简化为如下代码:

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

# create a new Firefox session


driver_temp = webdriver.Firefox()
driver_temp.implicitly_wait(30)
driver_temp.get("https://www.google.com")
body = driver_temp.find_element_by_tag_name('body')

# manually open second tab
body.send_keys(Keys.CONTROL + 't')
driver_temp.get("https://www.google.com")
body = driver_temp.find_element_by_tag_name('body')

# manually open third tab
body.send_keys(Keys.CONTROL + 't')
driver_temp.get("https://www.google.com")
body = driver_temp.find_element_by_tag_name('body')

#print the number of window_handles
print len(driver_temp.window_handles)

我打开了 3 个标签页,但是 len(driver_temp.window_handles) 始终为 1

最佳答案

Selenium 不提供用于操作浏览器选项卡的 API。您可能已经注意到,应用 CTRL/COMMAND+T“hack”打开新标签页。

查看更多:

相反,打开新的浏览器窗口。


好吧,公平地说,重要的是要提到 Firefox 和 Chrome 中的行为完全不同 - 如果您在 Chrome 中打开新标签页,selenium 会将每个标签页视为一个具有自己句柄的窗口,您将使用 switch_to.window() 在它们之间切换很容易。

关于python - 使用 Python 打开新窗口时,selenium window_handles 不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30258624/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com