在模态窗口中点击一个按钮 - Protractor

4
我正在为一个现有的应用编写Protractor测试。在一个模态窗口中,我有一个名为“Decline”的按钮,我正在尝试使用以下代码进行单击:
element(by.buttonText('Decline')).click();

但是我收到以下错误:
UnknownError: unknown error: Element is not clickable at point (,). Other element would receive the click:

也许是因为我在弹出窗口之外有另一个名为“拒绝”的按钮吗?

enter image description here

我应该如何点击模态窗口的“拒绝”按钮?发现以下是显示该“拒绝”按钮的JS代码。
.....
var content = {
          title: 'Decline',
          htmlBody: '<p>...</p> ',
          okButton: 'Decline',
          onOk: function() {
.....
5个回答

3

由于有两个文本为“Decline”的按钮,我们如何确定模态框中的按钮?

一种方法是改进定位器,使其在模态框内容的范围内工作。但是,由于您没有提供模态框的HTML表示,我无法为您提供具体答案。以下是可供您改进以适应您使用情况的示例:

element(by.css(".modalContent button[ng-click*=ok]")).click();
element(by.css(".modalContent")).element(by.buttonText("Decline")).click();

另一种方法是查找所有文本相同的按钮,然后筛选出可见的按钮

element.all(by.buttonText("Decline")).filter(function (button) {
    return button.isDisplayed().then(function (isDisplayed) {
        return isDisplayed;
    });
}).first().click();

3

我的同事推荐了这个方法,它很有效:

点击第一个拒绝按钮会打开一个模态窗口,

稍等一段时间,

现在点击第二个拒绝按钮。

element(by.buttonText('Decline')).click();
browser.sleep(2000);
element(by.cssContainingText('.btn', 'Decline')).click();

感谢您的所有帮助 :)

谢谢!完美运行! - Sharath
太好了 :) 很高兴听到这个消息。 - Praveesh P

0
编写代码,需要在模态窗口下方显示,在表单标签内部。并将该表单与现有表单序列化。

0

只需通过文本搜索按钮并使用 click 函数即可。对于您来说,应该是这样的:

element(by.buttonText('Cancel')).click();

-1

尝试下面的代码:

var DeclineBtn = element(by.buttonText('Decline'));
browser.executeScript("arguments[0].click()",DeclineBtn.getWebElement())

这个是做什么的?能否请您简要描述一下?由于有两个按钮的文本都是“拒绝”,我们如何识别模态框中的那一个按钮? - Praveesh P

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接