【问题标题】:Click link from popup单击弹出窗口中的链接
【发布时间】:2018-11-08 23:06:30
【问题描述】:

我在点击弹出窗口中的链接时遇到问题。 点击按钮后,弹出窗口显示约 3 秒:

<toast-container class="ng-tns-c12-31 ng-star-inserted">
<div class="toast-top-center" id="toast-container" style="position: fixed;">
  <!----><div class="toast toast-info ng-star-inserted ng-animating">
    <!----><div class="toast-close-button ng-tns-c12-31 ng-star-inserted" style="">×
    </div> 
    <!---->
    <div class="ng-tns-c12-31">
      <!----><span class="toast-message ng-star-inserted" style="">Section will removed. <a class="toast-link">Cancel</a></span>
      <!---->
    </div>             
  </div>
</div>
</toast-container>

我试图点击“取消”

element(by.partialLinkText('Cancel'))

var cancelLink = $('#toast-container a');
browser.executeScript("arguments[0].click();", cancelLink)

但是链接没有被点击。我不知道怎么做 断言在此弹出窗口上正常工作

var toastMessageBox = $('#toast-container');
    this.assertClearSelectionToastMessage = function () {
        expect(toastMessageBox.$('span').getText()).toBe(toastText)
        return this;
    }

【问题讨论】:

    标签: javascript automation webdriver protractor automated-tests


    【解决方案1】:

    也许您可以尝试使用Webdriver Actions builder 强制点击链接?

    大致如下: browser.wait(protractor.ExpectedConditions.visibilityOf(element(by.css('a.toast_link'))), 5000); driver.actions().click(element(by.css('a.toast_link'))).perform();

    问题在于它只适用于桌面浏览器——它还没有在 Appium 中实现——所以如果你也在移动浏览器上进行测试,你可能需要引入一些逻辑来做不同的事情。

    【讨论】:

    • 等待 'a.toast_link' 超时,但等待 '#toast-container' 没问题,没有错误。单击操作返回错误失败:使用定位器找不到元素:By(css选择器,a.toast_link)
    • 您可以尝试对元素使用完整的选择器吗?即#toast-container &gt; div &gt; div:nth-child(2) &gt; span &gt; a 如果这不起作用,也许您可​​以强制单击 xpath? //*[@id="toast-container"]//a
    【解决方案2】:

    弹出窗口尚未加载。该链接不可见,因此无法单击。您必须等待弹出窗口出现。

    元素可能是可点击的,而点击元素什么也不做。

    见:https://stackoverflow.com/a/21387564/1997776

    @Jonny Leeds 指出:

    需要注意的主要事项是按钮是否已启用。您仍然可以单击它们,并且没有任何东西会掉下来,并且元素在那里,但它还没有准备好被单击,所以什么都不做。

    【讨论】:

    • 不是真的,因为在它之前(单击取消)我从这个弹出窗口断言消息,它工作正常。当我控制台记录此弹出窗口时,控制台中会显示此弹出窗口中的此消息-“部分将被删除。取消”我尝试使用预期条件、可见性、elementToBeClicable,但它不起作用
    • 按逻辑表示“element(by.partialLinkText('Cancel'))”找不到元素。如何以其他方式找到它,比如 id?你能找到链接吗?如果两者都不起作用,则表明单击不起作用。你可以点击链接吗?
    • 手动我可以毫无问题地点击它。但是在控制台测试中我得到“消息:失败:陈旧的元素参考:元素未附加到页面文档(会话信息:chrome = 67.0.3396.62)(驱动程序信息:chromedriver = 2.39.562737(dba483cee6a5f15e2e2d73df16968ab10b38a2bf),平台= Linux 4.13.0-43-generic x86_64)"
    • 您需要再次找到该元素,以免它过时。
    • 但我试图再次找到它“ this.clickCancel = function () { var asa = $('a.toast_link'); asa.click(); return this; }”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多