Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用量角器在页面上定位非唯一按钮_Javascript_Angularjs_Protractor_Gulp Protractor - Fatal编程技术网

Javascript 如何使用量角器在页面上定位非唯一按钮

Javascript 如何使用量角器在页面上定位非唯一按钮,javascript,angularjs,protractor,gulp-protractor,Javascript,Angularjs,Protractor,Gulp Protractor,我试图找到一个在HTML中没有唯一标识符的按钮。 我尝试了每一件事,访问了网上的多个站点,但仍然找不到一个有效的定位器。 页面上有三个按钮,我需要添加的是页面上的第二个按钮。我已经试过了 element.all(by.css('[type="button"]')).get(1).click(); element.(by.xpathy('//div [@ng-click="addAdminForm()"]')).click(); $$('[ng-click="addAdminForm()"]'

我试图找到一个在HTML中没有唯一标识符的按钮。 我尝试了每一件事,访问了网上的多个站点,但仍然找不到一个有效的定位器。 页面上有三个按钮,我需要添加的是页面上的第二个按钮。我已经试过了

element.all(by.css('[type="button"]')).get(1).click();

element.(by.xpathy('//div [@ng-click="addAdminForm()"]')).click();

$$('[ng-click="addAdminForm()"]').click();

element.all(by.css('.adminportal-submit-button')).get(0).click();
提前感谢,任何帮助都将不胜感激

<div class="layout-align-start-center layout-row flex">

<button class="md-primary adminportal-cancel-button md-button md-ink-ripple" ng-transclude="" type="button" ng-click="gotoHomePage()" ng-disabled="disableButtons" analytics-on="" analytics-category="Clinics" analytics-event="cancel" tabindex="0" aria-disabled="false">
</div>

<div class="layout-align-end-center layout-row">

<button class="md-raised md-primary adminportal-submit-button md-button md-ink-ripple" ng-transclude="" type="button" ng-click="addAdminForm()" ng-disabled="manageClinicForm.$invalid || disableButtons" analytics-on="" analytics-category="Clinic-Admins" analytics-event="register" tabindex="0" aria-disabled="false">

<button class="md-raised md-primary adminportal-submit-button md-button md-ink-ripple" ng-transclude="" type="submit" ng-disabled="manageClinicForm.$invalid || disableButtons" aria-disabled="false">

xpath定位器应该可以工作:

element(by.xpath('//div[@ng-click="addAdminForm()"]')) 
如果没有,则尝试使用等待:

var button = element(by.xpath('//div[@ng-click="addAdminForm()"]'));
 browser.wait(EC.presenceOf(element(by.xpath('//div[@ng-click="addAdminForm()"]'))), 30000).then(function () {
        browser.wait(EC.visibilityOf(element(by.xpath('//div[@ng-click="addAdminForm()"]'))), 30000).then(function () {
            browser.wait(EC.elementToBeClickable(element(by.xpath('//div[@ng-click="addAdminForm()"]'))), 30000).then(function () {
                button.click();
            });
        });
    });

您可以尝试下面的定位器
$(“button.adminportal submit button[type='submit'])
如果您不能使用ID,下面是我们在工作中的做法:-虚拟CSS类。随便什么有意义的都可以。它将一种样式化机制转变为一种纯粹的身份识别机制(对我来说,这是一种身份破解),但通常是推荐的方法。-抓住你能找到的元素的最小子集(例如“按钮”),然后使用你想要的元素的索引。一点也不理想,通常建议在此基础上使用虚拟CSS类。-如果按钮具有有用的可识别标签,请迭代按钮并使用innerHTML查找它。这三个按钮中的一个通常会这样做。我尝试了$(“button.adminportal submit button[type='submit']),但没有成功。我不明白什么是伪CSS类--你能给我举个例子吗?Tim Consolazio,你能举个例子说明你所说的伪CSS类是什么意思吗?谢谢你,泰德