这是:Expect: does not get the actual value
的第二部分我能够更好地再现它,所以我拥有:
expect((rfpPage.buttons.sendRequest).getAttribute('disabled')).toBe('true');
(rfpPage.inputs.firstName).sendKeys('Name');
(rfpPage.inputs.lastName).sendKeys('Surname');
(rfpPage.inputs.email).sendKeys('name@email.com');
(rfpPage.inputs.phone).sendKeys('1234312');
(rfpPage.inputs.company).sendKeys('Company');
(rfpPage.inputs.address).sendKeys('Leningrad Motorway');
(rfpPage.inputs.city).sendKeys('Moscow');
(rfpPage.inputs.postalCode).sendKeys('125171');
(rfpPage.inputs.eventName).sendKeys('Test Meeting');
expect((rfpPage.buttons.sendRequest).getAttribute('disabled')).toBe(null);
HTML: 表格未填写时:
<button type="submit" class="btn btn-lg btn-warning pull-right ng-binding" ng-disabled="!rfpForm.$valid || isWaitForRfp" disabled="disabled">Send Request
</button>
填写表格时填写:
<button type="submit" class="btn btn-lg btn-warning pull-right ng-binding" ng-disabled="!rfpForm.$valid || isWaitForRfp"> Send Request
</button>
会发生什么:
第二个期望失败,说期望真为空。
这个测试在3-4台机器上本地工作,在多个浏览器上的browserstack上,在酱油上工作了好几个月。
*现在:它在BrowserStack上通过Jenkins执行时开始失败。 如果我在远程桌面计算机上本地运行此测试(Jenkins执行测试),它仍然运行正常。在几台机器上本地运行正常。在BrowserStack上本地运行正常。 *
我在这里有量角器2.2.0和Jasmine 2.3.4
在我看来,控制流程出了问题,但实际上它是非常奇怪的东西,我确实希望明确等待删除这个属性,因为它会有所帮助,但看起来它不是正确的解决方案。
第二个样本:
expect(contactInfoPage.selectors.contactInfoSection.companyName.isDisplayed()).toBe(false);
contactInfoPage.selectors.contactInfoSection.isCorporate.click();
expect(contactInfoPage.selectors.contactInfoSection.companyName.isDisplayed()).toBe(true);
点击之前DOM:
<input tabindex="11" type="text" ng-model="contactInfo.companyName" id="companyName" ng-required="isCorporateEvent" class="ng-valid-maxlength ng-touched ng-valid ng-valid-required" maxlength="80">
点击后DOM:
<input tabindex="11" type="text" ng-model="contactInfo.companyName" id="companyName" ng-required="isCorporateEvent" class="ng-valid-maxlength ng-touched required ng-invalid ng-invalid-required" maxlength="80" required="required">
错误:期望true为假
答案 0 :(得分:1)
我实际上会使用webdriver提供的内容 - isEnabled()
检查。
根据webdriver spec,它的逻辑检查表单元素是否具有disabled
属性:
如果表单控件为disabled,则将enabled设置为false。
如果满足以下任何条件,则禁用表单控件:
- 元素是按钮,输入,选择或textarea元素,以及 在此元素上指定disabled属性(无论其是什么 值)。
- 元素是fieldset元素的后代 已指定disabled属性,并且不是该属性的后代 fieldset元素的第一个元素子元素,如果有的话。
expect(rfpPage.buttons.sendRequest.isEnabled()).toBe(true);
答案 1 :(得分:1)
也许您只想等到提交按钮恢复为可点击状态。你试过这个吗?
var EC = protractor.ExpectedConditions;
browser.wait(EC.elementToBeClickable($('button[type="submit"]')), 10000);
答案 2 :(得分:0)
.IsEnabled()应该可以工作。我还建议使用elementexplorer快速找出结果