我寫了一個非常簡單的測驗,登錄后導航到一個頁面,并在頁面加載后單擊一個元素
在我的 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 互動時,我得到一個無法讀取未定義的“點擊”屬性
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();
uj5u.com熱心網友回復:
text()='x'模式尋找精確的文本匹配。你可以試試page.click('//mat-icon[contains(text(), "Sample")]')。
對于嚴格匹配,您應該使用text-is,對于mat-icon使用嚴格的文本規則進行選擇,這await page.locator('mat-icon :text-is(" Sample ")')可以作業。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/436138.html
