当前位置: 首页 > 知识库问答 >
问题:

无法单击网格分页以验证某些网格值

刘畅
2023-03-14

我正在使用以下方法来验证表格所有页面中的某些表格数据。我已经尝试了所有的可能性,任何人都可以分享您对此的看法。

下面的代码是我的页面,

this.isApplicationPresentUsingName = function (name) {

    return this.pgnumCount.count().then(function(num){
        if (num > 0) {
            console.log(num);
            for (var i = 0; i < num; i++) {
                return this.pgnumCount.filter(function(pg){
                    pg.getText().then(function(text){
                       return text.toString()===i.toString();
                   }).then(function(number){
                       number.click();
                }).then(function(){
                this.checkApplication(name).then(function (found) {
                    console.log("Text1");
                return found.length > 0;});
                });
            });
            }
        } else {
            console.log('Pagination not exists');
        }
    });
});

this . check application = function(text){ return element . all(by . CSS containing text(" # application-auth-list-2 tbody tr TD:first-child ",text));};

这个.pgnum计数=$$('a.ui-分页器-页面');

我在我的规范中这样称呼它,

expect(app auth . isaapplicationpresentusingname(application name))。toBeFalsy();

我面临以下问题,

失败:无法读取未定义的属性“filter”

但是我可以在控制台中找到与3完全匹配的页码。

请帮帮忙

共有1个答案

慕容安易
2023-03-14

首先,我将解释如何执行您的代码。

this.isApplicationPresentUsingName = function (name) {

return this.pgnumCount.count().then(function (num) {

    //You will get the total number of pages

    if (num > 0) {
        console.log(num);
        for (var i = 0; i < num; i++) {
            //below statement will throw an error because 
            // `this` refers to current function scope.
            return this.pgnumCount.filter(function (pg) {
                // return statement is missing.
                // so the filter wont work
                pg.getText().then(function (text) {
                    // value of i will always equals to num
                    // because this code will be executed asynchronously
                    // you need to use `closure` to get correct value of i
                    return text.toString() === i.toString();
                }).then(function (number) {
                    number.click();
                }).then(function () {
                    this.checkApplication(name).then(function (found) {
                        console.log("Text1");
                        return found.length > 0;
                    });
                });
            });
        }
    } else {
        console.log('Pagination not exists');
    }
});
}

所以你的实际代码应该看起来像,

this.isApplicationPresentUsingName = function (name) {
//save the reference of `this` to a local variable.
var self = this;

function recursiveSearch(currentPage, totalPage) {
    if (currentPage < totalPage) {
         //if current page is less total page
         // click the current page number
         self.pgnumCount.get(currentPage).click();
            // check if name is present in current page
            return self.checkApplication(name).then(function (found) {
                //if name is present in current page, return true.
                if (found) {
                    return true;
                } else {
                   //if name is not present in current page, 
                   // we need to again click next page and check if it is present
                    return recursiveSearch(index + 1, totalPage)
                }
            });
        }     else {
             //after checking for the name in all pages
             // return false because the name is not present in any of the page.
            return false;
        }
    }

    //get the total page number and recursively check if the name is present in each page.
    return this.pgnumCount.count().then(function (totalCount) {
        //start with page 0 till total number of pages    
        return recursiveSearch(0, totalCount);
    });

};

希望这能有所帮助。

 类似资料:
  • 我已经编写了Python 3脚本,它使用硒从公鸡资源的IFrame中的表中提取数据。此表包含2018年MLB时间表。 但是,在执行脚本时,我收到以下错误: 当它到达脚本中包含的行时。为什么会这样? 顺便说一句,如果你浏览上面的链接,你可以看到包含不同颜色徽标和文本的表格 仅供参考,我不希望在该iframe内恢复链接;相反,我想切换到它来获取数据。

  • 问题内容: 我在Angular UI Grid中有一个项目列表。当我单击一行时,我想转到另一个页面。(换句话说,网格中的每一行都是一个链接。) 我想这肯定是一个非常普遍的愿望,尽管我还没有真正看到过有关如何实现的文档。什么是完成此任务的好方法? 问题答案: 我自己想出了答案。这是我的控制器(ES6): 这是我的行模板(Jade): 另外,这是我的样式表(SCSS)。我认为突出显示光标下的行并使用光

  • 从这里下载selenium-server-4.0.0.jar之后 我将这个jar文件放在c文件夹中,然后使用cmd命令尝试使用这个命令启动selenium grid hub 我无法运行selenium网格中心,它显示以下内容 我试着把这个网址放在chrome浏览器中 然后它显示这个

  • 我有剑道网格和自定义搜索表单。在我的搜索表单中,我有提交和重置按钮。如果有搜索内容,那么网格将使用搜索的过滤器数据源进行更新,然后单击“重置”,网格将使用新数据源进行刷新。如果我将pagesize值10更改为20并单击“重置网格”,我的问题是没有重置。。然后网格页面大小变为20到10。。。如果单击“下一页”,则第二页的页面大小保持为20,第一页的页面大小保持为10 我怎么解决这个问题?任何想法?我

  • 单击包含< code>VerticalLayout行等组件的Vaadin 8 中的单元格时,不会选中该行(使用Vaadin 8.1.5)。 如果组件未填充整个单元格,则单击单元格中未使用的区域会使该行处于选中状态。 我一直在研究如何将点击组件转发到单元格点击侦听器,但尚未对此有任何控制。猜猜这甚至不是最好的方法。 解决方案是什么?

  • 下面是我的代码,我正在使用它来传递浏览器、节点和枢纽港来启动浏览器并执行测试,但是我得到了异常,尽管我能够设置selenium服务器。我把错误贴在代码下面。我使用mac book、Selenium3.4、Firefox55和Gecko0.18.0 下面是命令提示符中的日志