点击链接后如何阻止Firefox挂起?

时间:2014-02-17 07:02:59

标签: python firefox selenium selenium-webdriver skype

使用Python绑定v2.39.0的Webdriver Firefox 27.0(但也发布了Firefox'最新',Firefox 26.0和Firefox 27.0)

在下面的代码中,一旦执行命中某个页面上的链接obj.click(),浏览器就会挂起。如果在终端(Windows)中使用Ctrl + C终止脚本,浏览器将停止挂起。如果留给它自己的设备,浏览器似乎会无限期挂起。

我不确定是否允许我发布问题页面的HTML,但我可以与我的团队协商。

这个相同的代码曾经与现在导致问题的相同元素完美配合。我曾怀疑这与自动升级Firefox有关,但降级并没有解决问题(请查看我试过的内容以获取更多细节和我尝试过的事情)

def wait_and_click(obj_id, timeout=global_timeout, locator_attribute = 'ID'):
    print('waiting for ' + obj_id)
    obj = WebDriverWait(driver, timeout).until(EC.element_to_be_clickable((eval('By.' + locator_attribute), obj_id)))
    print("about to click object")
    obj.click()
    print("about to return from wait_and_click")
    return obj

我尝试过的事情:

  • 手动复制问题(没有浏览器挂起)
  • 尝试降级到不同版本的firefox并卸载所有扩展程序
  • 尝试跳过obj.click,如果obj_id等于问题元素 - 浏览器没有挂起(但脚本不会去任何地方:p因为需要点击某些内容)
  • 为页面上的元素尝试了更传统的WebDriverWait 然后find_element_by_xpath - 同样的浏览器挂起
  • 尝试使用不同的属性定位元素(最初尝试使用LINK_TEXT,也尝试通过XPATH - 没有区别)然后单击
  • 尝试在同一页面上找到不同的链接 - 同一浏览器挂起
  • 尝试在同一个网络应用的不同网页上找到链接 - 没有浏览器挂起
  • 尝试保存包含链接和链接指向的页面的页面源。我得到webdriver打开页面的本地副本,然后单击问题链接 - 打开目标页面,没有浏览器挂起

1 个答案:

答案 0 :(得分:1)

Argh,这是一个令人沮丧的解决方案 - 似乎是因为Skype工具栏自动安装了最新的Firefox升级版。

值得注意的是,它不会轻易消失。如果你去Firefox - >扩展程序,它只允许您禁用它。您必须转到“程序和功能”并从那里卸载它。在那之后,它就像一个魅力!

FFS MICROSOFT !!