javascript - Protractor 无法点击 <a> 元素内的嵌入 <span>

标签 javascript angularjs selenium-webdriver protractor

我有两个嵌入式 <span> <a> 中的元素元素。我需要在第二个 <span> 上触发点击事件. by.id id 上的方法我创建的类没有触发点击。我也试过by.binding那没有用。请帮助?

代码:

<div class="add-player">
  <a href class="btn" data-ng-if="!currentUser.isAuthenticated && !vm.hasPendingInvitation">
    <span>Add Player</span>
  </a>
  <a href class="btn" id="invite" data-ng-if="currentUser.isAuthenticated && !vm.hasPendingInvitation">
    <span id="invite-player">Add Player</span>
  </a>
</div>

最佳答案

我们可以使用定位器:

$("div.add-player a span").click();
$("#invite-player").click();
element(by.xpath("//span[. = 'Add Player']")).click();

我们也可以wait for the element to be visible :

var addPlayer = $("div.add-player a span"),
    EC = protractor.ExpectedConditions;

browser.wait(EC.visibilityOf(addPlayer), 5000);
addPlayer.click();

我们也可以尝试通过 JavaScript 点击:

browser.executeScript("arguments[0].click();", addPlayer.getWebElement());

或通过 browser.actions() :

browser.actions().mouseMove(addPlayer).click().perform();

或者,scroll into view点击前:

browser.executeScript("arguments[0].scrollIntoView();", addPlayer.getWebElement());
addPlayer.click();

您也可以filter与定位器匹配的可见元素:

var addPlayer = $$("#invite-player").filter(function (elm) {
    return elm.isDisplayed();
}).first();
addPlayer.click();

关于javascript - Protractor 无法点击 <a> 元素内的嵌入 <span>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34561999/

相关文章:

javascript - Firebase 是否发送给定路径下的所有数据?

javascript - getBoundingClientRect() 在 Chrome 中为复杂的 SVG 返回不准确的值

javascript - 调用父方法

firefox - 我无法使用木偶驱动程序和Selenium 3在FireFox 48的下拉列表中选择选项

javascript - 从外部文件加载外部 json 对象

javascript - ng-model 在 Angular Bootstrap ui 中不起作用

javascript - AngularJS 提供者

google-chrome - Chrome 用 selenium 打开 "Data;"

firefox - 升级到 Firefox 18 后,使用 Python 的 Selenium Webdriver 崩溃

javascript - 将 JSON 数据转换为 HTML 的基本 JavaScript 模板,其中模板字符串是 JavaScript 变量