首页 > 其他分享 >playwright中定位元素的方法

playwright中定位元素的方法

时间:2023-05-08 14:24:18浏览次数:43  
标签:定位 playwright const await 选择器 元素 方法 page

playwright中定位元素的方法

1. page.$(selector)

该方法接受一个 CSS 选择器作为参数,并返回与选择器匹配的第一个元素。如果不存在匹配的元素,则返回 null。该方法常常用于选取指定 ID 或 class 的元素。

const button = await page.$('#myButton'); // 通过 ID 选取按钮元素
const input = await page.$('.my-input'); // 通过 class 选取输入框元素
const link = await page.$('a[href="http://www.example.com"]'); // 选取指定链接元素

注意,该方法会根据 DOM 树中元素出现的顺序进行匹配,因此如果选择器可以匹配到多个元素,只会返回第一个匹配的元素。

通常情况下,page.$ 方法可以和其他方法一起使用,以实现更复杂的元素操作。

2. page.$$(selector)

该方法接受一个 CSS 选择器作为参数,并返回一个包含所有与选择器匹配的元素的数组。如果不存在匹配的元素,则返回空数组。

const buttons = await page.$$('button'); // 选取所有按钮元素
const texts = await page.$$('[class*="text"]'); // 选取所有包含 "text" 的 class 的元素

注意,该方法返回的数组中的元素顺序与它们在 DOM 树中出现的顺序相同。

3. page.locator(selector)

该方法创建一个 Locator 对象,可以用于更复杂的元素定位操作。该方法接受一个 CSS 选择器或 XPath 表达式作为参数,并返回一个 Locator 对象。

以下是使用 Locator 对象的示例:

const button = page.locator('#myButton');
const text = page.locator('div[class="my-div"] > span');
const link = page.locator('a').withAttribute('href', 'http://www.example.com');

由于 Locator 对象只是创建定位器的语法糖,所以它支持所有定位元素的方法和操作。

4. page.waitForSelector(selector[, options])

该方法等待指定的 CSS 选择器匹配的元素出现在页面上。该方法接受一个 CSS 选择器作为参数,以及可选的 options 参数,返回一个 Promise,该 Promise 会在元素出现或者超时之后 resolve。

以下是使用 page.waitForSelector 方法的示例:

await page.waitForSelector('#myButton'); // 等待 ID 为 myButton 的按钮出现
await page.waitForSelector('.my-div > span', { visible: true }); // 等待 .my-div 中的可见 span 元素出现

options 参数可以包含以下项:

  • visible:一个布尔值,指示元素是否必须可见。默认为 false
  • hidden:一个布尔值,指示元素是否必须隐藏。默认为 false
  • timeout:等待超时时间(以毫秒为单位)。默认为 30 秒。

该方法适用于需要等待特定元素出现的场景,如在页面刷新后等待加载完成的元素。

5. page.waitForFunction(pageFunction[, options[, ...args]])

该方法使用指定的匿名函数或字符串表达式进行定位,并返回一个 Promise,该 Promise 在函数返回 true 或者超时时 resolve。

以下是使用 page.waitForFunction 方法的示例:

await page.waitForFunction(() => document.querySelector('#myButton').disabled === false); // 等待按钮变成可用状态
await page.waitForFunction('document.querySelector(".my-div span").textContent === "Hello World!"'); // 等待 span 元素的内容被更新

options 参数可以包含以下项:

  • polling:检查函数的间隔时间(以毫秒为单位)。默认为 1 秒。
  • timeout:等待超时时间(以毫秒为单位)。默认为 30 秒。

该方法适用于需要等待复杂或动态生成的元素出现的场景,如等待 AJAX 请求完成后显示的元素。

总结

在 Playwright 中,有多种方式可以选择和定位元素,每种方式都可以使用 CSS 选择器或 XPath 表达式进行选择,使开发者可以根据自己的需求和场景进行选择。

标签:定位,playwright,const,await,选择器,元素,方法,page
From: https://www.cnblogs.com/DTCLOUD/p/17381598.html

相关文章

  • 固定定位
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><metahttp-equiv="X-UA-Compatib......
  • 删除 vector 中引用指向的元素,会有什么结果?
    #include<iostream>#include<vector>intmain(){std::vector<int>arr={1,2,3};constint&a=arr[0];std::cout<<a<<'\n';arr.erase(arr.begin());std::cout<<a<<�......
  • 列表单元素访问,超索引报错
    >>>lst[1,2,3,(3,'hj'),9]>>>lst[3](3,'hj')>>>lst[4:4][]>>>lst[4:5][9]>>>lst[4:6][9]>>>lst[6:7][]>>>lst.insert(7,9)#7超过最大索引,不会真正插入在第八个位置,而是插入在尾......
  • 调试 mouseover 才显示的元素
    temp1.dispatchEvent(newMouseEvent('mouseover',{view:window,bubbles:true,cancelable:true,}));......
  • Linux系列---【如何根据端口号确定应用是否已启动?并根据端口号定位到程序所在的目录?】
    如何根据端口号确定应用是否已启动?并根据端口号定位到程序所在的目录?方法一(lsof命令)#注意:没有该命令先执行安装命令yuminstalllsof#查看端口是否被占用lsof-i:7080如图,输完没有反应,说明端口未被占用,即应用未启动如图,输完如果有反应,寿命端口已占用,使用pwdx+pid命令即可......
  • 【二分查找】LeetCode 540. 有序数组中的单一元素
    题目链接540.有序数组中的单一元素思路假如不存在单个的元素,那么在奇数位置上总是成对元素的第一个元素,偶数位置上总是成对元素的第二个元素,但是如果加入了单个元素呢?我们可以看到在单个元素的左边这个特点没有变化,但是在单个元素的右边,奇数位置上总是成对元素的第二个元素,偶......
  • js 打印页面局部区域(指定位置)
    1.情景展示在浏览器的网页上,我们可以通过window.print()实现网页的打印功能。但是,该方法打印的是当前网页上面所有展示的内容,如何只打印指定区域内容呢?如下图所示,只将送检申请单所在区域打印出来,其它位置不用管,如何实现?2.具体分析window.print()打印的是全部内容,那我们就......
  • 69. 数组中数值和下标相等的元素
    classSolution{public:intgetNumberSameAsIndex(vector<int>&nums){intn=nums.size();intl=0,r=n-1;while(l<r){intmid=l+r>>1;if(nums[mid]<mid)l=mid+1;......
  • python中判断多个元素是否在列表中
    判断单个元素是否在列表中时可以通过in>>>'a'in['a','b','c']True但如果是多个元素,就不能通过in进行判断此时我们可以通过集合中的issubset和issuperset方法顾名思义,issubset是判断某集合是否是另外一个集合的子集,issuperset是判断某集合是否是另外一个集合的超集>>>......
  • ICP-MS/痕量元素分析实验需要的PFA耗材
    PFA(perfluoroalkoxy)isatough,flexible fluoropolymer thatisusedforflexibletubingandfluidprocessingequipmentwhenchemicalresistance,highpurity,andlowstiffnessarerequired.PFAhasoutstandingelectricalpropertiesincludinghighdielec......