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
答案 0 :(得分:1)
就目前情况而言,由于你做错了多重事情,很难确定你的 EXACT 问题。
HTML细分:
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
。