[英]In Playwright, can't use page.goto with headless webkit
我正在嘗試在 Playwright 中為 Drupal 網站編寫測試。 我通過 WSL2 在 Ubuntu 20.04 上運行。
我在我的 Playwright 配置文件中設置了一個基數 url ( https://www.example.com
)。
我有幾個簡單的步驟:
await this.page.goto('/user/logout');
await this.page.goto('/user/login');
await this.page.locator('input[name="name"]').fill('admin@example.com');
await this.page.locator('input[name="pass"]').fill('password');
await this.page.locator('input:has-text("Login")').click();
await this.page.waitForSelector('text="You are logged in"');
await this.page.goto('/admin/structure/webform/manage/myform', { waitUntil: 'networkIdle' });
我想在模擬 iPhone 上進行測試,所以我在我的配置文件中使用了它:
name: 'iPhone 6/7/8',
use: devices['iPhone 8'],
問題是,在這個僅處於無頭模式的 iPhone 8 模擬設備中,最后一個 goto 失敗( await this.page.goto('/admin/structure/webform/manage/myform')
)。 當我運行測試時,它會 100% 地發生。
該測試在 webkit(桌面)、chrome(桌面)、firefox(桌面)和 android(移動)上運行良好。 當不是無頭時,該測試也適用於 iOS。 同樣的步驟適用於真實的 iOS 設備。
我需要在最后一步添加networkIdle
以使其在無頭 Chrome(桌面和 Android)上運行,所以我猜我可能需要進行另一項更改才能使其在 iOS 上運行,但是什么?
當我觀看我的測試視頻時,當它進行到最后一步時,屏幕開始快速閃爍約 3 秒,然后變黑。
附加信息
根據Playwright 設備列表,我復制了 iPhone 8 的代碼並進行了實驗,看看具體是什么導致了錯誤。
如下所示,將isMobile
從true
更改為false
將允許測試通過。 因此,具體錯誤似乎與isMobile
to true
所做的任何設置有關。
projects: [
{
name: 'iPhone 6/7/8',
use: {
userAgent:
'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/15.4 Mobile/15A372 Safari/604.1',
browserName: 'webkit',
viewport: {
width: 375,
height: 667,
},
deviceScaleFactor: 2,
isMobile: false,
hasTouch: true,
defaultBrowserType: 'webkit',
},
},
],
如playwright issue中所述,此行為似乎是由操作系統故障引起的(在我的例子中,Ubuntu 在 WSL2 上運行)。
這已通過更新 ubuntu 中的所有包解決; 不幸的是,有幾個包,我不確定哪個是確切的修復,但要點是:
package.json
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.