Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 单击弹出窗口中的链接_Javascript_Automation_Webdriver_Protractor_Automated Tests - Fatal编程技术网

Javascript 单击弹出窗口中的链接

Javascript 单击弹出窗口中的链接,javascript,automation,webdriver,protractor,automated-tests,Javascript,Automation,Webdriver,Protractor,Automated Tests,我有问题,点击链接从弹出窗口。 单击按钮后,弹出窗口显示约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-anim

我有问题,点击链接从弹出窗口。 单击按钮后,弹出窗口显示约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>

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

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

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

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

见:

@Jonny Leeds指出:

要注意的一个主要问题是按钮是否启用。你仍然可以点击它们,没有任何东西会掉下来,元素就在那里,但它还没有准备好被点击,所以什么都不做


也许你可以尝试使用builder强制点击链接

大致如下:
browser.wait(progrator.ExpectedConditions.visibilityOf(元素)(by.css('a.toast\u link')),5000);
driver.actions()。单击(元素(by.css('a.toast_link'))。执行()


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

不太可能,因为在它之前(单击取消),我断言了这个弹出窗口中的消息,它工作正常。当I console.log此弹出窗口时,控制台中会显示此弹出窗口中的消息-“Section will removed.Cancel”我尝试使用预期的条件、可见性、elementToBeClicable,但它不按逻辑工作,这意味着“element(by.partialLinkText('Cancel'))找不到元素。换个方式怎么样,比如身份证?你能找到链接吗?如果两者都不起作用,则表明单击不起作用。你能点击链接吗?我可以手动点击,没有问题。但在控制台中,在测试过程中,我得到“消息:失败:过时元素引用:元素未附加到页面文档(会话信息: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;}”等待“a.toast_link”超时,但等待“#toast container”正常,没有错误。单击按操作返回错误失败:使用locator:by(css选择器,a.toast_链接)找不到元素。您可以尝试对元素使用完整选择器吗?i、 e.
#toast container>div>div:nth child(2)>span>a
如果这不起作用,也许可以强制单击xpath<代码>//*[@id=“toast container”]///a
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;
    }