javascript - 什么是仅单击链接(如果存在)的 javascript?

标签 javascript selenium conditional-statements

我在 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

虽然不是点击它[this],但如果我只是访问 url 也可以(虽然更脆弱)

http://my-apps-domain/users/sign_out

但我不确定确切的语法。

相关的 HTML 是:

<li><a href="/users/sign_out">Logout</a></li>

如果它存在,我想点击 a(或直接访问 url),否则什么都没有。

如果可能,我想找到一个非 jquery 的解决方案。

更新:我发现即使 javascript{window.location.replace('http://google.com') } 也会关闭我的 seleniumIDE 窗口并将其替换为 google 但不影响测试本身运行的实际窗口。

最佳答案

在原始 JavaScript 中触发点击事件可能很棘手(查看此答案:https://stackoverflow.com/a/10339248/2386700)

但是,如果您还可以使用 jQuery,那将简化事情。例如,如果注销按钮的 ID 类似于“注销”,那么您可以这样做:

var logoutButton = $('#logout');

if (logoutButton != null) {
    logoutButton.click();
}

关于javascript - 什么是仅单击链接(如果存在)的 javascript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17029755/

相关文章:

php - MySQL IF 语句 - 脚本有错误

javascript - 从 javascript 中的多维数组中删除元素的最便携方法是什么?

javascript - 使用 Twitter-Bootstrap 保存到 LocalStorage

java - org.openqa.selenium.remote.service.DriverService$Builder.createArgs()Lcom/google/common/collect/ImmutableList;使用 Selenium 3.5.3 Chrome 76

java - 如何关闭 chrome 浏览器弹出窗口?

javascript - JavaScript 和编程新手。我的代码有错误吗?

javascript - 使用 CSS 绘制圆形元素

javascript - 第一次成功加载 ajax 数据后按钮不起作用

java - 使用 Play Framework 进行多浏览器 Selenium/Web 驱动程序测试

flutter - 什么?在 Dart 中做什么?