【发布时间】:2017-09-11 02:58:32
【问题描述】:
我正在尝试使用 webdriverio/mocha 框架单击按钮 代码如下所示:
describe ('Mytest', function () {
beforeEach(function() {
browser.url('/');
})
it ('should click', function () {
browser.click("[ng-click='startApplication()']");
});
});
但我收到以下错误:
错误:使用给定的搜索参数无法在页面上找到元素。
我也试过 XPath:(//A[@ng-activate=''])[1]
得到同样的错误:
下面是这些按钮的 CSS
<div class="select-type__wrapper">
<div class="row">
<div class="col-sm-6">
<!-- ngIf: device === 'phone' -->
<!-- ngIf: device !== 'phone' -->
<div ng-if="device !== 'phone'" class="block ng-scope">
<a ng-activate="" ng-click="startApplication('?json=true')" class="btn btn-answer first ng-scope ng-click-active"></i>
</a>
</div>
<!-- end ngIf: device !== 'phone' -->
</div>
<div class="col-sm-6">
<!-- ngIf: device === 'phone' -->
<!-- ngIf: device !== 'phone' -->
<div ng-if="device !== 'phone'" class="block second ng-scope">
<a ng-activate="" ng-click="startApplication('?parent-user=true&json=true')" class="btn btn-answer ng-scope">
</div>
<!-- end ngIf: device !== 'phone' -->
</div>
</div>
</div>
【问题讨论】:
-
只是为了确保及时加载 HTML 元素,
browser.click("#myButton");是否适用于带有 ID 的 HTML 标记,例如<a id="myButton" ng-activate="" ng-click="startApplication('?json=true')" ...>? -
您的代码中是否有类似
browser.url的调用,或者您是否出于本文的目的更改了它,以保护您正在测试的网站的真实 URL?因为/在大多数真实情况下都不太可能打开任何网站。 -
我故意更改它以保护网站,是的,它按时加载。
-
您能否使用browser.getSource() 而不是
browser.click()来验证网页源,因为它在点击尝试时被webdriver 看到?如果您没有告诉我们动态创建/加载元素,它可能会解释您的错误消息。 -
是我使用
.getSource正在加载网站的所有元素,并且此页面上没有动态创建/加载任何元素。
标签: angularjs selenium css-selectors mocha.js webdriver-io