【问题标题】:Cannot select specific result in Search using Protractor - AngularJS无法使用量角器在搜索中选择特定结果 - AngularJS
【发布时间】:2015-11-15 14:09:29
【问题描述】:

我正在尝试从下拉列表中选择特定公司进行自动化测试。我需要每次都能选择完全相同的公司。我当前的脚本只选择列表中的第二个孩子,所以如果列表被更新或更改,脚本会中断,所以我想找到一种方法来选择我想要的确切公司,无论它在列表中的位置。 当我查看列表中的公司名称时,这就是 Chrome 中的 Inspect Element 显示的内容。本例中的公司是Test Master。网站主要是 AngularJS。

<span class="company-name ng-binding" bind-html-unsafe="match.model.name.length > 40 ? (match.model.name.substr(0,40) + '...').toLowerCase() : match.model.name.toLowerCase() | typeaheadHighlight:query"><strong>test master</strong></span> 

【问题讨论】:

    标签: javascript angularjs search testing protractor


    【解决方案1】:

    通过文字定位:

    element(by.xpath("//span[contains(@class, 'company-name')]/strong[. = 'test master']").click();
    

    或者,您可以根据模型值获取所有具有company-name 类和filter 的span 元素:

    element.all(by.css("span.company-name")).filter(function (company) {
        return company.evaluate("match.model.name").then(function (companyName) {
            return companyName === "test master";
        });
    }).first().click();
    

    您可能还需要wait 才能使元素变为可点击:

    var company = element(by.xpath("//span[contains(@class, 'company-name')]/strong[. = 'test master']");
    
    var EC = protractor.ExpectedConditions;
    browser.wait(EC.elementToBeClickable(company), 5000);
    company.click();
    

    【讨论】:

    • 我添加了脚本并执行并返回错误:NoSuchElementError: No element found using locator: By.xpath("//span[contains(@class, 'company-name') ]/strong[. = '测试大师']")
    • 我尝试了第一个解决方案并得到一个错误:未捕获的异常:等待量角器与页面同步时出错:“在窗口上找不到角度”第二个一直超时所以我改变了超时值,仍然没有运气。如果您有时间,您可以直接访问该站点并进行搜索,这样您就可以准确地看到我在看什么。 www.openbookben.com
    猜你喜欢
    • 1970-01-01
    • 2013-04-02
    • 2020-12-04
    • 2019-03-18
    • 1970-01-01
    • 2017-09-05
    • 1970-01-01
    • 1970-01-01
    • 2019-03-08
    相关资源
    最近更新 更多