如何在WebdriverIO中获取元素完整的lxpath?

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

我有代码检查容器下是否显示具有特定文本的元素。 它工作得很好,虽然我使用了完整的 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,但我没有找到方法,这怎么可能。

javascript xpath selector webdriver-io
1个回答
0
投票

问题是在所有元素中搜索表达式:

const element = await containerElement.$(`//*[contains(text(), '${text}')]`);

您必须在正斜杠之前添加一个点才能在元素下搜索。

$(`.//*[contains(text(), '${text}')]`);
© www.soinside.com 2019 - 2024. All rights reserved.