【发布时间】:2018-01-27 14:34:24
【问题描述】:
我们有一个使用 Selenium Webdriver(用 Python 编写)的自制自动化测试框架。它使用地图将对象的名称链接到网页中的标识符。不幸的是,我们似乎遇到了一个问题,即我们没有等待足够长的时间来完成 AJAX 调用(我们正在解决一些性能问题)。
现在感谢 stackoverflow 和其他互联网资源,我发现了以下代码段:
在决定与对象交互之前插入到框架中
try:
WebDriverWait(driver, 5).until(ajax_complete, "Ajax check waited 5 seconds")
except TimeoutException:
logger1.info("Warning: waited 5 seconds)
然后这是 ajax_complete 的代码:
def ajax_complete(driver):
try:
return 0 == driver.execute_script("return jQuery.active")
except WebDriverException:
pass
问题是某些页面(登录屏幕)没有 jQuery,所以我总是陷入 TimeoutException。我知道目前最上面的代码段将在 5 秒后超时并显示一条日志消息,但由于我们的性能问题,我需要将其更改为 60 秒。这意味着登录页面将有 3 分钟的等待时间(1 分钟用于输入用户名,1 分钟用于输入密码,1 分钟用于点击登录按钮)同时等待 Ajax 检查超时,因为 jQuery 只是不存在页面。
在进行 WebDriverWait 检查之前,我是否可以寻找一些东西来确认网页上确实存在 jQuery?做一些脚本元素检查就足够了吗?
喜欢:
if driver.find_element_by_tagname("<script>")
如果返回 True,那么页面上有一个脚本 - 不一定是 jQuery,但它会更接近,也许可以使用更具体的 find_element_by。困难的部分是我正在尝试检查是否有负面影响(jQuery 不存在)。
【问题讨论】:
标签: jquery python ajax selenium