Python 使用Selenium Web驱动程序每个选项卡一个会话?
我想为我打开的每个选项卡创建一个新会话,然后使用Selenium python单独控制会话。这可能吗 @reynoldsnp:Firefox有一个官方插件可以实现这一点,但我不确定是否可以让selenium与该插件交互。addons.mozilla.org/en-GB/firefox/addon/multi-account-containers如果你想办法的话,我很想知道怎么做 (由于我的声誉得分,我还不能发表评论,因此引用了评论) 我不知道如何实际与扩展进行交互,但如果您有一组已知的站点,您希望打开: 试试这个:Python 使用Selenium Web驱动程序每个选项卡一个会话?,python,python-3.x,selenium,selenium-webdriver,browser,Python,Python 3.x,Selenium,Selenium Webdriver,Browser,我想为我打开的每个选项卡创建一个新会话,然后使用Selenium python单独控制会话。这可能吗 @reynoldsnp:Firefox有一个官方插件可以实现这一点,但我不确定是否可以让selenium与该插件交互。addons.mozilla.org/en-GB/firefox/addon/multi-account-containers如果你想办法的话,我很想知道怎么做 (由于我的声誉得分,我还不能发表评论,因此引用了评论) 我不知道如何实际与扩展进行交互,但如果您有一组已知的站点,您希
firefox--新实例--ProfileManager
首先,不,你不能。选项卡作为进程运行时,会附加到最初打开浏览器的会话ID。这就是协议的工作原理 但是,它们有一个唯一的ID,您可以使用它来识别它们并在它们之间切换
driver.window_handles
将为您提供打开选项卡的列表每个选项卡都是完全隔离的。您现在可以在两者之间进行选择
driver.switch_to_window("any open tab taken from windows handles list")
driver.do_something
driver.switch_to_window("any other tab from windows handles list")
driver.do_something_else_on_other_tab
# or (this option can let you run in parallel)
driver a = ChromeDriver()
driver b = ChromeDriver()
a.do_something
b.do_something
正如建议的那样(我个人也这么做),为每个选项卡打开新的会话,这样你就可以并行它们,并且运行得更快,总之
我不确定多个浏览器或多个选项卡之间的性能差异有多大。。。它们应该使用几乎相同的资源。一个选项卡是驱动程序的同一个会话-但是可以有多个选项卡,您可以单独管理它们,但不能同时运行它们-您需要切换选项卡来控制它们。它将转到选项卡a,执行操作。转到选项卡b做动作等…是的,我理解。但是我可以在选项卡上使用不同的会话吗?就像选项卡A上的一个独立会话和选项卡B上的另一个会话一样,它们将共享会话数据—就像在普通浏览器中打开两个选项卡时一样。所以独立(隔离)没有,但如果您在them@nick318因为我可以通过多个选项卡而不是多个浏览器获得更高的性能:)单个会话。个人饼干。不同的标签,绝对值得一试。每个标签也可以使用单独的代理吗?@Lindau你是说:很好的黑客!我需要能够使用selenium动态打开新的隔离容器选项卡,因此手动为概要文件创建静态容器并不能满足我的需要。
driver.switch_to_window("any open tab taken from windows handles list")
driver.do_something
driver.switch_to_window("any other tab from windows handles list")
driver.do_something_else_on_other_tab
# or (this option can let you run in parallel)
driver a = ChromeDriver()
driver b = ChromeDriver()
a.do_something
b.do_something