Python 单击链接后如何阻止Firefox挂起?
带有Python绑定的Webdriver v2.39.0 Firefox 27.0(但本期也转载了Firefox“最新版本”、Firefox 26.0和Firefox 27.0) 在下面的代码中,一旦执行点击某个页面上的链接,浏览器就会挂起。如果在终端(Windows)中使用Ctrl+C终止脚本,浏览器将停止挂起。如果任由它自己的设备使用,浏览器似乎会无限期地挂起 我不确定是否允许我发布问题页面的HTML,但我可以与我的团队协商 这段代码曾经与现在导致问题的元素完美配合。我曾怀疑这与Firefox的自动升级有关,但降级并没有解决问题(请参阅“我尝试过的事情”一节了解更多详细信息和我尝试过的事情) 我尝试过的事情:Python 单击链接后如何阻止Firefox挂起?,python,firefox,selenium,selenium-webdriver,skype,Python,Firefox,Selenium,Selenium Webdriver,Skype,带有Python绑定的Webdriver v2.39.0 Firefox 27.0(但本期也转载了Firefox“最新版本”、Firefox 26.0和Firefox 27.0) 在下面的代码中,一旦执行点击某个页面上的链接,浏览器就会挂起。如果在终端(Windows)中使用Ctrl+C终止脚本,浏览器将停止挂起。如果任由它自己的设备使用,浏览器似乎会无限期地挂起 我不确定是否允许我发布问题页面的HTML,但我可以与我的团队协商 这段代码曾经与现在导致问题的元素完美配合。我曾怀疑这与Firefo
- 手动复制问题(无浏览器挂起)
- 尝试降级到不同版本的firefox并卸载所有扩展
- 如果obj_id等于问题元素,则尝试跳过obj.click-浏览器未挂起(但脚本不会挂起:p,因为需要单击某些内容)
- 为页面上的某个元素尝试了更传统的WebDriverWait 然后通过xpath查找元素-相同的浏览器挂起
- 尝试通过其他属性定位元素(最初尝试使用LINK_TEXT,也尝试通过XPATH-无差异),然后单击
- 尝试在同一页上查找不同的链接-同一浏览器挂起
- 尝试在同一web应用的不同页面上查找链接-无浏览器挂起
- 已尝试保存包含链接的页面的源以及链接指向的第页的源。我让webdriver打开该页面的本地副本,然后单击问题链接-目标页面在没有浏览器挂起的情况下打开
微软 单击时对象是否存在?因为等待有一个超时,如果它达到了超时,你可能会在没有对象的情况下通过它(我猜)。如果它达到了超时,我不会得到ElementNotFound或TimeoutException错误吗?或者类似的东西会导致执行终止(而不是浏览器停止工作?)此外,我知道它正在进入obj。单击是因为“即将单击对象”正在打印到控制台。您是对的,根据文档,如果找不到元素,它应该抛出异常。您是否尝试过手动复制问题(只需单击浏览器中的元素,或通过控制台触发单击)?至于是否发布html,你可以从尽可能多的页面剥离开始,这将有助于缩小问题的范围,如果你确实需要共享html,那么问题就不会那么严重了。是的,我尝试过手动复制问题,但问题没有表现出来。我已将其添加到我的“我尝试过的事情”列表中。剥离html的好主意:)我以前从未这样做过。我想我可以保存页面源代码,让webdriver打开源代码的本地副本并从那里进行实验。这就是你的想法吗?不管你是否有这个想法,我试着在本地运行这些页面,链接运行得很好。因此,它似乎与应用服务器为页面提供服务的方式和webdriver之间的交互有关。但我不知道下一步该怎么办
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