目录
- 1. Playwright获得所有的Cookies
- 2. Playwright获得所有的链接
- 3. Playwright获得包含特定字符串/文本的所有链接
- 4. Playwright点击按钮
- 5. Playwright点击链接
- 6.Playwright获得所有的标签页
- 7.Playwright获取元素的所有属性
- 8.点击时设置超时
- 9.如果元素存在则单击元素
- 10.模拟鼠标点击
- 11.拖放操作
本文详细介绍了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()
暂无评论内容