首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >输入电子邮件地址后,我需要驱动程序按两次选项卡

输入电子邮件地址后,我需要驱动程序按两次选项卡
EN

Stack Overflow用户
提问于 2015-08-07 14:20:27
回答 1查看 125关注 0票数 1

我有一个模式来添加一个用户到一个网站。首先,需要添加一个电子邮件地址,然后检查服务器,看看用户列表中是否已经有电子邮件。接下来,需要添加名字、最后等。问题是,在我单击输入框外或点击两次选项卡之前,不会针对服务器检查电子邮件。在检查完成之前,名字、姓氏等都是只读的,元素是不可见的,所以我不能再填写表格了。

下面是我尝试过的代码:

代码语言:javascript
复制
element.all(by.css("input[type$='text']")).first().sendKeys(protractor.Key.TAB);
browser.driver.sleep(3000);
//below is the first name element
element(by.xpath("(//input[@type='text'])[2]")).sendKeys("a First Name");

代码语言:javascript
复制
 element.all(by.css("input[type$='text']")).first().sendKeys('anemailaddy@newmarketinc.com', protractor.Key.TAB); //.browser.actions().sendKeys(protractor.Key.TAB).perform();

上述注释行是以不同的方式尝试的。我也试过这个:

最后一个问题,电子邮件地址是你在上面看到的元素,名字,姓氏,等等在一个数组中。要访问名字栏,它会是inputtype$=‘text’:nth-of type(2)作为列表中的第二个吗?

页面HTML:

代码语言:javascript
复制
<div class="dialog-overlay" ng-class="{visible: usersCtrl.editPermissionsVisible}">
  <div class="edit-user-dialog">
    <div class="dialog-header">
      <div class="dg-title-text">Edit a User&#39;s Permissions</div>
      <span class="icon icon-close" ng-click="usersCtrl.hideEditPermissions()"></span>
    </div>
    <div class="dialog-content">
      <div class="dg-row">
        <div>
          <span class="dg-field-label">Email:</span>
          <span class="dg-field-error " ng-bind="text = usersCtrl.invalidEmailMessage"></span>
        </div>

        <input type="text" class="dg-field-input" ng-model="usersCtrl.user.email" ng-blur="usersCtrl.onChangeEmail()" ng-disabled="!usersCtrl.addUserVisible" />
      </div>
      <div class="dg-row">
        <div class="dg-cell col-2">
          <span class="dg-field-label">First Name:</span>
          <input type="text" class="dg-field-input" ng-model="usersCtrl.user.firstName" ng-disabled="usersCtrl.editPermissionsVisible || usersCtrl.searchNotStartOrSuccess" />
        </div>
        <div class="dg-cell col-2">
          <span class="dg-field-label">Last Name:</span>
          <input type="text" class="dg-field-input" ng-model="usersCtrl.user.lastName" ng-disabled="usersCtrl.editPermissionsVisible || usersCtrl.searchNotStartOrSuccess" />
        </div>
      </div>
      <div class="dg-row">
        <span class="dg-field-label">Title:</span>
        <input type="text" class="dg-field-input" ng-model="usersCtrl.user.title" ng-disabled="usersCtrl.editPermissionsVisible || usersCtrl.searchNotStartOrSuccess" />
      </div>
      <div class="dg-row">
        <div class="checkbox-control" ng-click="usersCtrl.permissions.toggleContentManagement()">
          <span class="checkbox-mark svg-icon" ng-class="{'icon-check-on': usersCtrl.permissions.allowContentManagement}"></span>
          <span class="checkbox-text bold">Allow Access to iPlan Content Management System</span>
        </div>
      </div>
      <div class="dg-row content-management">
        <div class="checkbox-column" ng-repeat="permission in usersCtrl.permissions.contentManagement" ng-if="permission.canIssue">
          <div class="checkbox-control" ng-click="!usersCtrl.isDisabledPermission(permission) && usersCtrl.togglePermission(permission)" ng-class="{disabled: usersCtrl.isDisabledPermission(permission)}">
            <span class="checkbox-mark svg-icon" ng-class="{'icon-check-on': permission.value}"></span>
            <span class="checkbox-text">{{permission.displayName}}</span>
          </div>
        </div>
        <div class="clearfix"></div>
      </div>
      <div class="dg-row ">
        <div class="checkbox-control" ng-click="usersCtrl.togglePermission(usersCtrl.permissions.manageUsers)">
          <span class="checkbox-mark svg-icon" ng-class="{'icon-check-on': usersCtrl.permissions.manageUsers.value}"></span>
          <span class="checkbox-text bold">{{usersCtrl.permissions.manageUsers.displayName}}</span>
        </div>
      </div>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-07 14:29:25

"TAB“方法不适合您的原因是您可能会遇到Chrome version 44 has some issue with selenium test问题。在这种情况下,您需要尝试使用最新的Chrome或Firefox。

最后一个问题,电子邮件地址是你在上面看到的元素,名字,姓氏,等等在一个数组中。要访问名字栏,它会是inputtype$=‘text’:nth-of type(2)作为列表中的第二个吗?

定义一次输入列表,并使用first()get()last()

代码语言:javascript
复制
var inputs = element.all(by.css("input[type$='text']"));
var email = inputs.first();

email.sendKeys("anemailaddy@newmarketinc.com", protractor.Key.TAB, protractor.Key.TAB);

inputs.get(1).sendKeys("a First Name");

您也可以尝试在模式之外单击,例如:

代码语言:javascript
复制
browser.actions().mouseMove({x: 5, y: 5}).click().perform();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31880005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档