探针。如何写一个定位器来选择所需的div并点击其上的按钮?

问题描述 投票:0回答:1

比如页面上有三个区块。例子scructare每个块都有一个标题和带有按钮的div.action。例子每个人的标题都不一样。我需要选择一个带有文本标题的div,然后点击一个按钮。

我发现这个元素是这样的

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

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

节目组架构

protractor e2e-testing angular-e2e
1个回答
2
投票

我假设三个区块的标题为Block1、Block2和Block3。

现在可以通过传递块的标题来点击每个块的按钮,因为块的标题是不会改变的,可以在运行时传递。假设 "group-list-item "是标签div下的类名,按钮的类名是标签按钮下的 "action"。

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


0
投票

请看我提供的答案 此处.

我不喜欢使用 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();
}
© www.soinside.com 2019 - 2024. All rights reserved.