量角器:如何将定位器写入 select 所需的 div 并单击其上的按钮?

Protractor: How to write a locator to select the desired div and click the button on it?

例如,页面上有三个块。 example scructare 每个块都有一个标题和 div.action 以及一个按钮 example 每个人的标题都不一样。我需要 select 带有文本标题的 div,然后单击按钮

我发现这个元素是这样的

return browser.element(by.css('.group-list-item:last-child')).element(by.css('.action'));

但必要的块不一定是最后一个,可以是1个也可以是第二个。区块标题不变

show element show structure

我假设三个区块的标题分别是Block1、Block2和Block3

现在可以通过传递块标题为每个块单击按钮,因为块标题不会更改并且可以传递 运行 时间。假设 "group-list-item" 是标签 div 下的 class 名称,并且 class 按钮的名称是标签按钮

下的 "action"

clickButton(blockTitle: string): ElementFinder { return element(by.xpath("*//div[contains(@class,'group-list-item')]//div(text()='" + blockTitle+ "']//following-sibling::div")); }

看看我提供的答案here

我不喜欢使用 xpath,因为它们在动态或频繁更新的应用程序中非常脆弱。

为您的元素动态添加一个 id。您还可以在不调用 xpath 的情况下使用以下选择器:

get buttonByBlockTitle(searchTitle: string) {
    return elements(by.css('div.group-list-item').element(by.css(div.tittle).textContent(searchTitle).element(by.css('button.action');
}

public clickButton(searchTitle: string) {
    return this.buttonByBlockTitle(searchTitle).click();
}