今天介绍用class 和 id 以外的其他方法来定位元素
用属性定位
page.locator('[src="https://img1.doubanio.com/dae/niffler/niffler/images/c8874c4a-1b56-11ec-9135-26f150e6ae79.jpg"]')
Locate by alt text
<img src="https://img3.doubanio.com/dae/niffler/niffler/images/1f2f02f2-63a2-11ec-92b3-1686c25e428a.jpg" alt="工作之苦——解决2020年代的工作新问题">
locater_by_alt = page.get_by_alt_text("工作之苦——解决2020年代的工作新问题")
Locate by placeholder
<input type="text" maxlength="60" size="12" placeholder="书籍、电影、音乐、小组、小站、成员" name="q" autocomplete="off">
locater_by_placeholder = page.get_by_placeholder("书籍、电影、音乐、小组、小站、成员")
Locate by text
<span class="rec_topics_subtitle">新话题</span>
locater_by_role = page.get_by_text("新话题")
Locate by title
<div class="site-name" title="豆瓣网" style="display: inline-block; line-height: 24px; height: 24px; margin-top: 4px;margin-right: 24px;width: 73px;background-image: url(https://img1.doubanio.com/f/sns/714b8751a533ef592bea5cd4603dbb9e713ded61/pics/sns/sitename.png);background-size: contain; background-repeat: no-repeat;text-indent: -999em;">
豆瓣网
</div>
page.get_by_title("豆瓣网")
Filter by text
page.get_by_role("listitem").filter(has_text="豆瓣音乐");
page.get_by_role("listitem").filter(has_not_text="豆瓣音乐")
page.get_by_role("listitem").filter(has=page.locator('[href="https://www.douban.com/group/"]'))
]
N-th element locator
当返回一组元素时,用这个方法定位到其中的某一个
#索引从第0个开始,所以要定位第六个元素时nth=5
page.locator('div.pic img').locator('nth=5')
用以上语句定位元素并加上蒙版成功
点击第一个button
page.locator("button").locator("nth=0").click()
点击最后一个button
page.locator("button").locator("nth=-1").click()