如何点击webdriverIO

时间:2017-07-05 11:01:17

标签: node.js webdriver-io

HTML元素看起来像 <div class="toggleButton" ng-class="{checked: settings.$storage.enabledApps[app.name]}" ng-click="settings.apps.toggleApp(app.name)"><input class="workplayEnabled switch" type="checkbox" ng-checked="settings.$storage.enabledApps[app.name]"></div>

我试过browser.click('.toggleButton .switch'),browser.click('.toggleButton'), browser.click(' .switch')

但它没有用 它会在元素不可见时抛出错误 而如果我尝试browser.isSelected('.toggleButton .switch'),browser.isSelected('.toggleButton'), browser.isSelected(' .switch'),则返回false

1 个答案:

答案 0 :(得分:1)

就目前情况而言,由于你做错了多重事情,很难确定你的 EXACT 问题。

HTML细分:

  • 这是通过AngularJS生成的HTML;
  • 如果您分析Angular属性(ng - 属性/指令),您只会注意到<div>已添加点击触发功能(通过ng-click="settings.apps.toggleApp(app.name)"),因此您只需要定位<div>元素;
  • <input>仅具有被动行为(如果选中了切换按钮,则会在ng-checked触发器上填充;

您的问题:现在我们缩小了解决方案以点击您的<div>,我们需要确保您的选择器返回正确的元素。

  • 打开您的Angular应用,打开浏览器控制台&amp;尝试查看您的选择器是否正常工作(例如:$(div.toggleButton))。如果CSS选择器返回的不仅仅是一个元素($(div.toggleButton).length > 1),那意味着你有多个<div>个,那么你必须找到一个更具体的定位器;

  • 找到<div>的正确定位符后,我会在您点击之前添加.debug()(更多信息 here )在您的WebdriverIO脚本中,以便我可以轻松调试方案;

  • 一旦进入调试模式,我会尝试使用在浏览器控制台中找到我元素的相同选择器。

<强> !!!注意: .isSelected()将始终在您的方案中返回false,因为您提到未能点击切换开关,这符合ng-checked条件。您可以通过在调试模式下手动选择切换开关然后在.isSelected()上执行<input>命令来验证这一点。然后它应该返回true