我在SeleniumIDE,但是要求javascript。
对于其他人来说,这似乎是一种相当普遍的情况。
我有一个很好的测试套件,但它首先做的是登录。
我希望套件开始确保我已退出,如果没有,请将我退出。 我可以通过“退出”超链接
的存在来判断我是否已登录但我只想点击注销如果我当前已登录,否则我想什么都不做,因为如果我还没有登录就试图点击不存在的元素会引发错误
逻辑上这是:
if ui element(logout link in my case) exists
click on logout link
else
do nothing
end
我正在使用Selenium IDE并调用javascript - 鉴于我在基本的seleniumIDE中无法做if then
,我希望我能在javascript中做到这一点。
类似的东西:
store javascript{if ([a with text 'Logout' exists]) then click on it end;} id1
虽然不是click on it [this]
,但如果我刚刚访问了网址
http://my-apps-domain/users/sign_out
但我不确定确切的语法。
相关的HTML是:
<li><a href="/users/sign_out">Logout</a></li>
如果存在,我想点击a(或直接访问网址),否则没有。
如果可能,我想找到一个非jquery解决方案。
更新:我发现即使javascript{window.location.replace('http://google.com') }
关闭了我的seleniumIDE窗口并将其替换为谷歌,但不影响测试本身运行的实际窗口。
答案 0 :(得分:3)
在原始JavaScript中触发点击事件可能会非常棘手(请查看此答案:https://stackoverflow.com/a/10339248/2386700)
但是,如果你也可以使用jQuery,那会简化一些事情。例如,如果注销按钮的ID为“logout”,那么您可以执行以下操作:
var logoutButton = $('#logout');
if (logoutButton != null) {
logoutButton.click();
}
答案 1 :(得分:0)
由于您无法控制HTML,我建议您以其他方式引用该链接。为此目的,URL似乎非常可靠:
var logoutLink = document.querySelector('a[href="/users/sign_out"]');
if(logoutLink != null) {
window.location.href = logoutLink.href;
}
您无需触发任何类型的点击事件,因为可以使用window.location
轻松完成页面导航。
<强>更新强>
另一个想法是为您的按钮分配id
,然后click it with selenium:
var logoutLink = document.querySelector('a[href="/users/sign_out"]');
if(logoutLink != null) {
logoutLink.setAttribute("id", "logoutLink");
}