Python中Playwright的常用操作方法分享

 更新时间:2023年05月09日 08:55:37   作者:田辛 | 田豆芽  
本文详细介绍了Playwright的常用操作方法,包括获取页面元素、点击按钮和链接等。这些方法可以帮助开发者更加高效地进行自动化测试和爬虫开发,需要的可以参考一下

本文详细介绍了Playwright的常用操作方法,包括获取页面元素、点击按钮和链接、获取标签页、获取元素属性、设置超时、单击元素、模拟鼠标点击和拖放操作等。这些方法可以帮助开发者更加高效地进行自动化测试和爬虫开发。

1. Playwright获得所有的Cookies

可以使用 BrowserContext.cookies() 方法来获取特定的Cookie。如果没有指定参数,将返回所有Cookie。

# Get all cookies
all_cookies = browser_context.cookies()

2. Playwright获得所有的链接

可以使用page.locator()方法并指定a表达式来获取页面所有的链接。

page_elements = page.locator('a')
print(f"{page_elements.count()} link/links are found.")

3. Playwright获得包含特定字符串/文本的所有链接

使用page.locator()方法并指定 a:has-text() 表达式来获取页面的所有链接。

page_elements = page.locator('a:has-text("田辛老师")')
print(f"{page_elements.count()} link/links are found.")

4. Playwright点击按钮

点击按钮的基本思路就是使用click()方法。

4.1 先定位元素

element = page.locator('input[name="goto_tdouya_homepage"]')
element.click()

4.2 直接点击

element = page.click('input[name="goto_tdouya_homepage"]')

5. Playwright点击链接

和按钮一样, 主体思路还是使用click()方法。 注意, 和按钮不同的是,link元素的定位需要选择第一个元素。

5.1. 先定位元素

element = page.locator('a:has-text("goto_tdouya_homepage")').first
element.click()

5.2 直接点击

page.click('a:has-text("goto_tdouya_homepage") >> nth=0'

6.Playwright获得所有的标签页

现在的浏览器都是支持多个标签页的。 那么我们可以采用BrowserContext.pages属性来获取所有的打开页面。

## 获得所有被打开的pages/tabs 
opened_pages = context.pages
# 枚举所有的打开页面的url
for p in opened_pages:
    print(p.url)

7.Playwright获取元素的所有属性

可以使用locator.evaluate()方法执行Javascript表达式, 获取元素的所有属性名。 并枚举他们,并使用get_attribute()方法获得每个属性的值。

# 定位元素
element = page.locator('img_tdouya').first
# 获得所有的属性
el_attrs = element.evaluate("el => el.getAttributeNames()")
# 枚举所有的属性名称和值
for attr in el_attrs:
    print(attr, ":", element.get_attribute(attr))

8.点击时设置超时

虽然Playwright的超时要比Selenium友好的多。 但是,必要的时候也可以设置。 尤其是一些严苛环境下。

# timeout的单位是毫秒, 默认值是30秒,也就是30000
page.click("#tdouyaButton", timeout=60000)  

9.如果元素存在则单击元素

在本小结中, 我们探索的情形是元素有可能存在有可能不存在。 整体思路是综合利用上面提到过的page.locator()方法。检查元素数量。 如果大于0, 则进行后续点击操作。

# 获得元素
elements = page.locator('a:has-text("田辛老师")')  

# 获得元素数量
link_number = elements.count() 

# 元素数量大于0, 则进行点击操作
if link_number > 0:
    elements.first.click()

10.模拟鼠标点击

使用page.mouse.click()方法来点击页面中特定位置的元素。

page.mouse.click(1700, 1450)

11.拖放操作

使用page.mouse.move实现拖动, 使用page.mouse.up()、page.mouse.down()方法模拟鼠标左键长按和放开的操作。

page.mouse.move(150, 150)
page.mouse.down()
page.mouse.move(300, 300)
page.mouse.up()

到此这篇关于Python中Playwright的常用操作方法分享的文章就介绍到这了,更多相关Python Playwright内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python类和函数中使用静态变量的方法

    python类和函数中使用静态变量的方法

    这篇文章主要介绍了python类和函数中使用静态变量的方法,实例分析了三种常用的实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-05-05
  • 详解mac python+selenium+Chrome 简单案例

    详解mac python+selenium+Chrome 简单案例

    这篇文章主要介绍了详解mac python+selenium+Chrome 简单案例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • numpy.random.shuffle打乱顺序函数的实现

    numpy.random.shuffle打乱顺序函数的实现

    这篇文章主要介绍了numpy.random.shuffle打乱顺序函数的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • Python如何利用IMAP实现邮箱客户端功能

    Python如何利用IMAP实现邮箱客户端功能

    IMAP是另一种读取电子邮件的协议,IMAP是读取邮件服务器的电子邮件与公布栏信息的方法,也就是说IMAP 允许客户端的邮件程序存取远程的信息,这篇文章主要给大家介绍了关于Python如何利用IMAP实现邮箱客户端功能的相关资料,需要的朋友可以参考下
    2021-09-09
  • 一篇文章教你用Python绘画一个太阳系

    一篇文章教你用Python绘画一个太阳系

    这篇文章主要给大家介绍了关于如何利用Python绘画一个太阳系,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-10-10
  • Python代码实现删除一个list里面重复元素的方法

    Python代码实现删除一个list里面重复元素的方法

    今天小编就为大家分享一篇关于Python代码实现删除一个list里面重复元素的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-04-04
  • python turtle绘图命令及案例

    python turtle绘图命令及案例

    这篇文章主要给大家分享的是python turtle绘图命令及案例,绘图有很多命令,可以划分为三种:画笔运动命令、画笔控制命令、全局控制命令,下面来看看文章的详细内容吧,需要的朋友可以参考一下
    2021-11-11
  • Python源码加密与Pytorch模型加密分别介绍

    Python源码加密与Pytorch模型加密分别介绍

    在实际的工作中,有时候我们需要部署自己的Python应用,但这时候我们并不希望别人能够看到自己的Python源程序。因此,我们需要为自己的源代码进行加密,Python已经为我们提供了这样一套工作机制
    2022-12-12
  • python实现图片上添加图片

    python实现图片上添加图片

    这篇文章主要为大家详细介绍了python实现图片上添加图片,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-11-11
  • python pygame实现球球大作战

    python pygame实现球球大作战

    这篇文章主要为大家详细介绍了Python pygame实现球球大作战,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-11-11

最新评论