xpath 函数 text() 有困难
Having difficulty with xpath function text()
我写了一个非常简单的测试,登录后导航到一个页面,并在页面加载后单击一个元素
在我的 selenium 项目中,我使用 xpath text() 函数来帮助我在应用程序自动化中查找特定图标
我想知道如何与剧作家一起做到这一点
这是我的测试,它使用了剧作家文档中的页面对象模态
test('Navigate using POM', async ({ page }) => {
await page.goto('/db');
const mainView = new MainView(page);
mainView.selectSampleInSideNav();
});
问题是我需要单击的图标是由 HTML 中的特定文本定义的,但是该确切文本用于另一个元素,所以我不能写类似的东西(它也有白色html 中还有空格)
await page.click('text= Sample ');
有没有办法在playwright中写这个xpath表达式?
"//mat-icon[text()=' Sample ']"
我试过这样的事情:
const sideNavSample = page.$('mat-icon >> text=" Sample "');
但是当我尝试与 sideNavSample
交互时,我收到未定义的无法读取 属性 of 'click'
await this.sideNavSample.click();
任何帮助都会很棒,因为 Xpath 是我可以为这个特定图标定义唯一标识符的唯一方法。
如果这是一个愚蠢的问题,我们深表歉意
@archon 谢谢你的建议,但似乎当我完全按照你写的方式写出点击动作时它工作得很好,但是当我将它存储在一个变量中时它失败了。
我无法解释为什么但是
这有效
page.click('//mat-icon[contains(text(), "Sample")]')
这不是
this.sampleOptionInSideNav = page.locator('//mat-icon[contains(text(), " Sample ")]');
await this.reviewOptionInSideNav.click();
text()='x'
模式查找完全匹配的文本。你可以试试 page.click('//mat-icon[contains(text(), "Sample")]')
.
对于严格匹配,你应该使用text-is
,对于选择具有严格文本规则的mat-icon
,这个await page.locator('mat-icon :text-is(" Sample ")')
可以工作。
我写了一个非常简单的测试,登录后导航到一个页面,并在页面加载后单击一个元素
在我的 selenium 项目中,我使用 xpath text() 函数来帮助我在应用程序自动化中查找特定图标
我想知道如何与剧作家一起做到这一点
这是我的测试,它使用了剧作家文档中的页面对象模态
test('Navigate using POM', async ({ page }) => {
await page.goto('/db');
const mainView = new MainView(page);
mainView.selectSampleInSideNav();
});
问题是我需要单击的图标是由 HTML 中的特定文本定义的,但是该确切文本用于另一个元素,所以我不能写类似的东西(它也有白色html 中还有空格)
await page.click('text= Sample ');
有没有办法在playwright中写这个xpath表达式?
"//mat-icon[text()=' Sample ']"
我试过这样的事情:
const sideNavSample = page.$('mat-icon >> text=" Sample "');
但是当我尝试与 sideNavSample
交互时,我收到未定义的无法读取 属性 of 'click'await this.sideNavSample.click();
任何帮助都会很棒,因为 Xpath 是我可以为这个特定图标定义唯一标识符的唯一方法。 如果这是一个愚蠢的问题,我们深表歉意
@archon 谢谢你的建议,但似乎当我完全按照你写的方式写出点击动作时它工作得很好,但是当我将它存储在一个变量中时它失败了。
我无法解释为什么但是
这有效
page.click('//mat-icon[contains(text(), "Sample")]')
这不是
this.sampleOptionInSideNav = page.locator('//mat-icon[contains(text(), " Sample ")]');
await this.reviewOptionInSideNav.click();
text()='x'
模式查找完全匹配的文本。你可以试试 page.click('//mat-icon[contains(text(), "Sample")]')
.
对于严格匹配,你应该使用text-is
,对于选择具有严格文本规则的mat-icon
,这个await page.locator('mat-icon :text-is(" Sample ")')
可以工作。