我有代码检查容器下是否显示具有特定文本的元素。 它工作得很好,虽然我使用了完整的 xpath,但是在我们更改选择器之后(它仍然得到相同的元素)不起作用。我该如何解决这个问题?
async function (text, display, container) {
const containerElement = await Elements[container].call();
const element = await $(containerElement.selector.toString() + `//*[contains(text(), '${text}')]`);
await component.checkDisplay(element, display);
});
selectorOld(){
return $('/html/body/p-dynamicdialog/div/div/div[3]/something-element');
},
selectorNew(){
return $('something-element');
},
站点上仅存在一个“某物元素”,并且新旧选择器都返回相同的元素。
我尝试了以下方法:
const element = await containerElement.$(`//*[contains(text(), '${text}')]`);
但它的搜索是全局的,而不仅仅是在选择器下。
我的另一个想法是,以某种方式获取元素xpath,但我没有找到方法,这怎么可能。
问题是在所有元素中搜索表达式:
const element = await containerElement.$(`//*[contains(text(), '${text}')]`);
您必须在正斜杠之前添加一个点才能在元素下搜索。
$(`.//*[contains(text(), '${text}')]`);