白内障患者可以't点击嵌入式<span>内部<a>要素

Protractor can't click on embedded <span> inside <a> element

本文关键字:lt gt 内部 span 要素 嵌入式 患者 白内障      更新时间:2023-09-26

我在一个<a>元素中嵌入了两个<span>元素。我需要在第二个<span>上触发一个点击事件。我创建的id类上的by.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();

我们也可以等待元素可见:

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();

或者,在点击之前滚动到视图中:

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

您还可以过滤与定位器匹配的可见元素:

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