【问题标题】:selenium/python: after closing tab, trying to open new tab opens the previously closed tabselenium/python:关闭选项卡后,尝试打开新选项卡会打开以前关闭的选项卡
【发布时间】:2017-07-27 16:20:18
【问题描述】:

我正在使用 python 2.7。我查看了thesequestions 以寻求在新标签中打开链接的帮助,这似乎最初是有效的。但是,一旦我尝试关闭选项卡,就会遇到问题。这是我的代码:

actions.key_down(Keys.COMMAND).click(people[x]).key_up(Keys.COMMAND).perform()
driver.switch_to.window(driver.window_handles[-1]) # now at user page
# interact with user page
driver.close()
driver.switch_to.window(driver.window_handles[0])

这是一个遍历 people 数组中每个元素的 for 循环,其中 people 是与用户关注的个人 Twitter 个人资料相对应的 Web 元素列表。在第一次运行时,它会在新选项卡中正确单击第一个人的个人资料,切换到已创建的选项卡,与之交互,关闭它,然后重新关注原始选项卡(带有人员列表)。但是,在第二次迭代中,当它“点击”第二个人时,它实际上为第一个人和第二个人打开了一个选项卡,这是不正确的。我相信它应该只点击一件事,现在是第二个人的个人资料,因为我只有一次点击操作,它位于people[x]

可能出了什么问题?

【问题讨论】:

    标签: python selenium tabs


    【解决方案1】:

    尝试迭代这部分:

    driver.switch_to.window(driver.window_handles[-1])
    

    所以你的第二个用户是这样的:

    driver.switch_to.window(driver.window_handles[-2])
    

    您需要声明全局变量并在 for 循环结束时更改值。

    希望对你有帮助。

    【讨论】:

    • 虽然这在技术上确实有效,因为现在我正在与正确的页面进行交互,但它仍然不能解决每次单击时打开多个选项卡的问题。我真的很想找到一种方法,只打开与我想要单击的用户对应的选项卡,因为否则我会留下许多打开的选项卡,即使我不使用它们。鉴于我将执行此操作将近 100 次,我不确定 Chrome 是否可以一次处理那么多打开的标签,并且我希望避免每次都关闭 n-1 个标签,因为我认为这将非常低效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-08
    相关资源
    最近更新 更多