【问题标题】:How to test an element with protractor that has no id or class?如何使用没有 id 或类的量角器测试元素?
【发布时间】:2025-12-30 15:25:11
【问题描述】:

我是量角器的新手,正在尝试测试代码中的各种元素(我没有编写的代码)。

这里是一些代码的示例:

<ul class="primary_menu"> <li class=""> <a href="http&#x3a;&#x2f;&#x2f;localhost&#x3a;8080&#x2f;web&#x2f;aaaa_customer&#x2f;home" > Home</a> </li>

如上所示,该元素没有 ID,并且类为空。因此我如何访问它? 下面是我为访问具有 ID 的元素而编写的一些代码:

browser.driver.findElement(by.id('header-search-link')).click();

我也尝试通过.css 访问元素,但对上述问题不起作用。

任何帮助都会很棒

【问题讨论】:

    标签: html css testing protractor end-to-end


    【解决方案1】:

    如果您想访问Home 链接,只需通过partial link text 获取:

    element(by.partialLinkText('Home'));
    

    或者,您可以使用CSS selector

    element.all(by.css('ul.primary_menu > li > a')).first();
    

    【讨论】:

    • 好吧,这是有道理的,但是我该如何添加点击功能呢?目前,当我首先添加它时:.first().click();,它说没有未定义的功能点击
    • 快速问题,如何访问第二个元素? .second() 似乎不起作用?
    • 我可以私信你吗?给我发邮件到mikesjones1987@gmail.com也许
    【解决方案2】:

    根据http://angular.github.io/protractor/#/locators#finding-sub-elements,您可以链接定位器来查找元素:

    element(by.css('.primary_menu')).element(by.tagName('li'));
    

    element(by.css('.primary_menu li'));
    

    (未经测试,我从未使用过 Protractor)

    【讨论】:

    • 好的,那么它是如何工作的?我想访问页面上第二个列表中的第一个元素。据我所知,您正在访问第一个“li”中的第一个元素?您如何指定要击中的 ul 以及要击中的 li ?如果你明白我的意思
    • 使用get(),您可以访问特定元素。如果您想在第二个 ul 中使用第一个 li(编号以 0 开头)element(by.css('.primary_menu')).get(1).element(by.tagName('li')).get(0);
    • object 对象没有方法'get'?这是我的确切路线:browser.driver.findElement(by.css('primary_menu')).get(1).element(by.tagName('ul')).get(0).click();