首页 » 智能科技 » 软件测试求职篇:Playwright 面试问题你可能会很头疼

软件测试求职篇:Playwright 面试问题你可能会很头疼

中建深圳装饰通讯 2025-03-31 0

扫一扫用手机浏览

文章目录 [+]

这些问题的创建是为了迷惑你,以是如果你没有答对,也不要对自己太苛刻。
同时,一些答案包含阐明和代码示例。
请滚动到页面底部查看。

1.本地环境

软件测试求职篇:Playwright 面试问题你可能会很头疼 软件测试求职篇:Playwright 面试问题你可能会很头疼 智能科技

如果你在本地机器上利用你须要设置并启动确当地环境运行测试,例如在http://localhost:3000/,你将如何在测试运行期间处理本地环境的设置?

软件测试求职篇:Playwright 面试问题你可能会很头疼 软件测试求职篇:Playwright 面试问题你可能会很头疼 智能科技
(图片来自网络侵删)

可能的答案:

·在运行测试之前启动你确当地环境

·在package.json中编写一个脚本来启动本地环境并运行你的测试

·利用webServer

答案

所有可能的答案都是有效的,但推举的方法是利用webServer配置。

2.contain比较

除了一个接管定位器,另一个接管值之外,await expect(locator).toContainText()和await expect(value).toContain()两者之间的紧张差异是什么:

答案

第一个是自动重试断言,意味着它将重试最多5秒钟,直到元素涌现;第二个将考试测验一次性断言。

3.延迟加载

不才面的URL中,文本"Loading complete"将在10秒后涌现。
我们的测试在expect步骤中失落败,预期:可见,收到:隐蔽。
你如何修复这个测试?

test("The visible methods",async({page})=>{

await page.goto("https://webdriveruniversity.com/Accordion/index.html");

await expect(page.getByText("LOADING COMPLETE.")).toBeVisible()

});

答案

默认的expect超时是5秒,如果在该韶光间隔内元素不可见,测试将失落败。
为了修复测试,我们通过添加一个超时,仅为此步骤延长超时,超过我们知道的10秒延迟,如下所示:await expect(page.getByText("LOADING COMPLETE.")).toBeVisible({timeout:12000})

4.自我修复

知道magento.softwaretestingboard.com上有一个名为"Sale"的菜单项,点击它将导航到一个新页面。
完成下面的测试,通过编写一个新的步骤,点击"Sale"菜单选项,但为该元素创建一个自我修复的定位器。

test("The self-healing",async({page})=>{

await page.goto("https://magento.softwaretestingboard.com/");

await page.getByLabel('Consent',{exact:true}).click()

});

答案

自我修复定位器是指你利用多个定位器指向同一个元素,但利用赞助方法或利用OR运算符将它们链接在一起。
利用OR运算符,你可以供应多个指向同一元素的定位器,如果一个由于运用程序变动而破坏,它可以考试测验利用另一个。

5.关闭的浏览器

这段代码将做什么:

test("The closed browser",async({page})=>{

await page.goto("https://blog.martioli.com/");

await page

.getByRole('link',{name:'About'})

.click();

expect(page).toHaveURL(/about/);

});

可能的答案:

·测试将失落败,由于About是一个按钮而不是一个链接

·测试将因目标页面出错而失落败

·测试将因通报给.toHaveURL()的参数而失落败

答案

测试将因目标页面出错而失落败。
缺点:expect.toHaveURL:目标页面、高下文或浏览器已关闭。

6.引用

知道第二步上点击的元素是一个页面上的返回链接,这段代码将做什么:

test("The reference",async({page})=>{

await page.goto("https://blog.martioli.com/playwright-tips-and-tricks-1/");

await page

.locator('section').locator('p').locator('a').getByText('buy me a coffee').click()

await expect(page).toHaveURL(/blog.martioli.com/)

});

可能的答案:

·测试将失落败,由于'buy me a coffee'是一个链接,我们已经从martioli.com导航离开了

·测试将通过

·测试将失落败,由于你不能稠浊利用locator().locator().locator()

答案

测试将通过,由于点击返回链接将天生一个带有我们初始来源(blog.martioli.com)引用的URL。

7.其他措辞环境

修正下面的测试,并让它用不同的措辞环境运行,例如德语。

test("The locale",async({page})=>{

await page.goto("https://www.google.com/");

});

答案

你可以在测试内部修正配置。
只需在测试上方添加test.use({locale:'de-DE'})

8.CSS属性

考虑到下面的代码,你如何改进它以提高可读性和简洁性。

test("The css properties",async({page})=>{

await page.goto("https://magento.softwaretestingboard.com/");

await page.getByLabel('Consent',{exact:true}).click()

const element=page.getByText("Shop New Yoga")

const backgroundColor=await element.evaluate((el)=>{

return window.getComputedStyle(el).getPropertyValue('background-color');

});

expect(backgroundColor).toBe("rgb(25,121,195)")

});

答案

你不须要调用evaluate,由于你已经有一个内置的方法叫做toHaveCSS()。
同时记住,toHaveCSS()具有自动重试功能,这在等待某些元素属性延迟涌现时至关主要。

9.长按

考虑到下面的代码,你如何修正点击步骤以仿照按住左鼠标按钮3秒钟然后开释鼠标按钮。

test("The long click",async({page})=>{

await page.goto("https://www.clickspeedtester.com/mouse-test/");

await page.getByRole('link',{name:'Second Clicker'}).click()

});

答案

Click可以可选地接管一个工具,个中属性为delay,值为毫秒。
像这样:.click({delay:3000})将它与元素配对,它将在该元素上持续3秒钟然后开释鼠标按钮。

10.逼迫

页面上有一个数据赞许弹出窗口,你必须遵守。
"搜索"按钮隐蔽在这个模态框后面。
给定以下代码。
将会发生什么?

test("The force",async({page})=>{

await page.goto("https://www.google.com/");

//搜索输入字段

await page.locator('textarea').first().fill("martioli")

//搜索按钮

await page.locator('[type=submit][name="btnK"]').last().click({force:true})

});

可能的答案:

·测试将通过。
我利用了{force:true},它将点击按钮并在模态框后面显示结果

·测试将通过,但模态框后面不会显示结果

·测试将失落败,超时,由于它不能点击模态框后面的按钮

答案

测试将通过,但模态框后面不会显示结果。
force:true不会在元素在另一个元素下面时点击,但它也不会出错(playwright的bug?)。
添补()的情形并非如此。
如果你检讨输入,它在输入字段中输入没有问题。

11.根本URL

我在配置文件中设置了baseUrl。
这段代码将做什么:

test("The baseurl",async({page})=>{

await page.goto('');

});

可能的答案:

·测试将失落败。
我在引号之间忘却了/

·测试将失落败,由于.goto()须要双引号

·测试将通过

答案

测试将通过,空字符串和"/"的浸染相同。
它将导航到在playwright.config.js中配置的baseUrl。

12.事情线程

考虑到下面的关于事情线程的配置。
如果我运行100个测试套件,它们将如何运行:

module.exports=defineConfig({

testDir:"./tests",

workers:"5%",

projects:[

{

name:"chromium",

use:{...devices["Desktop Chrome"]},

},

],

});

可能的答案:

·测试将以事情线程的5%的功率运行得非常慢

·测试将在你拥有的CPU核心数的5%上运行

·测试乃至不会开始,由于你不能为事情线程设置百分比值

答案

测试将在你拥有的CPU核心数的5%上运行。
例如,如果你有4个核心,这意味着100%中的4个将意味着每个25%。
在我们的情形下,5是25%以下,以是你将只有一个事情线程。

文末了,我约请你进入我们的软件测试学习互换群,大家可以一起磋商互换软件测试,共同学习软件测试技能、口试等软件测试方方面面,理解测试行业的最新趋势,助你快速进阶Python自动化测试/测试开拓,稳住当前职位同时走向高薪之路。

末了:

1)关注+私信回答:“测试”,可以免费领取一份10G软件测试工程师口试宝典文档资料。
以及相对应的***学习教程免费分享!

2)关注+私信回答:"入群" 就可以约请你进入软件测试群学习互换~~

标签:

相关文章

如斯“个性”的傲骄店家 你见过吗

为什么店主的业务韶光要这么设定呢?出于什么样的考虑?省城还有哪些店的业务韶光会这么“个性”呢?近日,山西就这些问题进行了采访。“个...

智能科技 2025-04-13 阅读0 评论0

此次电源横评是我带过最差的一届 懂?

首席玩家黑寡妇700W在12V重载时关断了输出无法完成测试,多次测试的结果仍旧如此,因此没有数据,其他产品都可以通过交叉负载测试。...

智能科技 2025-04-13 阅读0 评论0

辽宁辽阳佟二堡:电商直播蓬勃成长

位于辽宁辽阳的佟二堡镇是全国皮草生产、加工、发卖三大基地之一,在海内皮装裘皮市场霸占主导地位。今年以来,通过社交直播平台进行商品发...

智能科技 2025-04-13 阅读0 评论0