【问题标题】:Protractor: Selecting an Element量角器:选择元素
【发布时间】:2019-08-15 16:09:03
【问题描述】:

我想选择一个按钮,这样我就可以点击它,但我尝试选择它的方法都没有奏效。

这些都是我尝试过但没有奏效的方法。大部分都会导致选择器无效的错误。

element(by.css('md-card-actions>button>span')).click();

element(by.css('md-card-actions class="stepper-buttons ng-scope layout-row" layout="row" ng-if="vm.stepperFactory.controls" style="'));

element(by.className('stepper-buttons layout-row')).click();

element.all(by.className('flex')).get(2).click();

element(by.css('md-card-actions>button')).click();

element(by.css('md-card-actions')).click();

element(by.className('stepper-buttons ng-scope layout-row')).click();

element(by.css('md-card-actions class="stepper-buttons ng-scope layout-row" layout="row" ng-if="vm.stepperFactory.controls"')).click();

element(by.css('md-card-actions class="stepper-buttons ng-scope layout-row" layout="row"')).click();

element(by.css('md-card-actions class="stepper-buttons ng-scope layout-row"')).click(); 

这是包含我要选择的继续人口统计按钮的应用程序代码:

<md-card-actions class="stepper-buttons layout-row" layout="row" ng-if="vm.stepperFactory.controls">
         <!-- BACK Button -->
    <!---->
    <!-- Spacer -->
    <span flex="" class="flex"></span>
    <!-- NEXT Button -->
    <button class="md-raised md-button md-ink-ripple md-accent" type="button" ng-transclude="" ng-class="{ 'md-primary' : !vm.stepperFactory.lastStep, 'md-accent' : vm.stepperFactory.lastStep }" ng-disabled="!vm.stepperFactory.nextButton.active||!stepperForm.$valid" ng-click="vm.stepperFactory.goNext(stepperForm)"><span>
        Continue to Demographics
    </span></button>
</md-card-actions>

【问题讨论】:

  • 你试过element(by.buttonText('Continue to Demographics'));吗?
  • 谢谢,但我得到的响应是该元素不可点击,另一个元素应该会收到点击。我尝试使用该元素名称,但它也不起作用。

标签: protractor


【解决方案1】:

与您尝试的第一个类似,但可能会有所不同:

element(by.css('.md-card-actions .md-raised.md-button.md-ink-ripple.md-accent span'));

【讨论】:

  • 谢谢,但我仍然收到 No element found 响应。
【解决方案2】:

尝试使用下面的代码 sn-p

browser.waitForAngularEnabled=false;
element(by.buttonText('Continue to Demographics'));

【讨论】:

  • 谢谢,但我收到了回复。失败:未定义 False
  • 尝试使用小写的false。
【解决方案3】:

您的按钮内有一个跨度。而“Continue to Demographics”文本就在这个范围内。 请试试这个:

element(by.xpath('//span[contains(text(), "Continue to Demographics")]'))

更新: 尝试使用期望条件等待元素可点击

var EC = protractor.ExpectedConditions;
var myButton = element(by.xpath('//span[contains(text(), "Continue to Demographics")]'))
browser.wait(EC.elementToBeClickable(myButton), 10000, "element is not clickable");

如果您会收到超时错误(“元素不可点击”),这意味着我对定位器的建议是错误的。请告诉我

【讨论】:

  • 谢谢,但这是我得到的回复:... 在点 (1240, 978) 不可点击.其他元素会收到点击:...卡片操作>
  • 没有错误,但是没有点击按钮。我不知道为什么我的一些尝试会导致“不可点击”响应,因为该按钮确实是可点击的。感谢您再次尝试。
  • @DFG 所以让我澄清一下:'elementToBeClickable' 没有解决错误,但是你得到'不可点击'错误​​?我的意思是,如果您将元素设置为可点击的预期条件,那么如果该元素不可点击,它应该会失败。或者您没有尝试预期的条件?
猜你喜欢
  • 2018-04-21
  • 2016-03-04
  • 1970-01-01
  • 2018-01-11
  • 1970-01-01
  • 2015-03-10
  • 1970-01-01
  • 1970-01-01
  • 2020-06-04
相关资源
最近更新 更多