gpt4 book ai didi

ajax - WebRat+Selenium WebDriver : wait for ajax to be completed

转载 作者:行者123 更新时间:2023-12-04 20:25:04 25 4
gpt4 key购买 nike

我们在我们的应用程序中使用 Selenium2.0 aka WebDriver 运行 Webrat。

WebDriver 可以很好地处理页面重新加载,如果浏览器正在重新加载整个页面,则不会启动后续步骤。问题是这种机制不适用于 Ajax 请求。在 click() 或 change() 之后有一些时,WebDriver 不会做任何空闲。

任何人都可以建议如何让 webdriver 空闲,直到页面上的所有 ajax 请求结束?

最佳答案

我们最终在 selenium 上编写了一个层,通过将调用包装在一个可选循环中来处理这种情况。所以当你这样做时:

@browser.click "#my_button_id"

它会做一些类似于上面自动化测试器建议的事情:
class Browser
def click(locator)
wait_for_element(locator, :timeout => PAGE_EVENT_TIMEOUT)
@selenium.click(locator)
end

def wait_for_element(locator, options)
timeout = options[:timeout] || PAGE_LOAD_TIMEOUT
selenium_locator = locator.clone
expression = <<EOF
var element;
try {
element = selenium.browserbot.findElement('#{selenium_locator}');
} catch(e) {
element = null;
};
element != null;
EOF
begin
selenium.wait_for_condition(expression, timeout)
rescue ::Selenium::SeleniumException
raise "Couldn't find element with locator '#{locator}' on the page: #{$!}.\nThe locator passed to selenium was '#{selenium_locator}'"
end
end
end

包装器还做了其他事情,比如允许通过按钮/输入标签等进行搜索(所以包装器不仅存在于时间问题上,这只是我们放在那里的东西之一。)

关于ajax - WebRat+Selenium WebDriver : wait for ajax to be completed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2191349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com