【playwright篇】page.wait_for_selector()/page.locator() 区别

page.wait_for_selector()

page.wait_for_selector() 方法主要用于等待页面上的某个元素变得可用或可见。它会阻塞脚本执行,直到满足指定条件为止。

方法签名
page.wait_for_selector(selector, state=None, timeout=None)
参数说明
  • selector: CSS 选择器字符串,用于匹配页面上的元素。
  • state (可选): 指定元素的状态。可以是 'attached''detached''visible''hidden'。默认为 'visible'

  'attached': 等待元素被附加到文档树中。

  'detached': 等待元素从文档树中被移除。

  'visible': 等待元素变得可见。

  'hidden': 等待元素变得不可见。

  • timeout (可选): 设置等待的最大时间(以毫秒为单位)。如果超时仍未达到指定状态,则会抛出一个超时异常。默认值为 30000 毫秒(30 秒)。
示例
# 等待元素变得可见
page.wait_for_selector('#myElement', state='visible')

# 等待元素被附加到 DOM
page.wait_for_selector('#myElement', state='attached')

# 设置超时时间为 5 秒
page.wait_for_selector('#myElement', timeout=5000)
返回值

page.wait_for_selector()方法成功执行并且找到匹配的元素时,它返回一个 Locator 对象。Locator 对象允许你对页面上的元素执行各种操作,如点击、填写表单等。

匹配多个元素场景

page.wait_for_selector() 如果匹配多个元素时

注意事项

  • 匹配多个元素:即使选择器匹配了多个元素,page.wait_for_selector() 也只会返回第一个匹配的元素。
  • 需要所有元素:如果你需要对所有匹配的元素进行操作,可以使用 page.locator() 方法并调用 all() 方法来获取所有匹配的元素列表。
  • # 创建定位器对象,并获取所有匹配的元素
    elements = page.locator('.myElement').all()
  • 定位特定元素:需要使用page.locator ()处理
  • 参照page.locator()方法

page.locator()

page.locator() 方法在 Playwright 中用于创建一个定位器对象,该对象可以用来执行各种操作,如点击、填写表单等。它不会阻塞脚本执行。

当你使用 page.locator() 方法时,即使选择器匹配了多个元素,它也会返回一个定位器对象,你可以通过这个对象来对所有匹配的元素执行操作。

方法签名
page.locator(selector)
参数说明
  • selector: CSS 选择器字符串,用于匹配页面上的元素。
返回值
  • 类型page.locator() 返回一个 Locator 对象。
  • 含义Locator 对象代表页面上匹配给定选择器的所有元素。
示例: locator对象操作
# 创建一个定位器对象
element = page.locator('#myElement')

# 对元素执行操作
element.click()
element.fill('text')
element.is_visible()
示例: locator对象对应多个元素 
# 创建定位器对象
elements_locator = page.locator('.myElement')
        
# 获取所有匹配的元素
elements = elements_locator.all()
        
# 遍历所有元素
for element in elements:
    # 对每个元素执行操作
    element.click()

示例:多个元素(定位特定的一个元素)

想定位特定的一个元素(例如第二个或第三个)

 使用更精确的选择器,示例如下:"data-index"关键字表示指定索引位置

# 定位特定的元素
specific_element = page.locator('.myElement[data-index="2"]')

使用索引,示例如下

# 创建定位器对象
elements_locator = page.locator('.myElement')
        
# 选择第二个元素(索引为 1)
second_element = elements_locator.nth(1)

总结

  1. 阻塞与否:

    • page.wait_for_selector() 在等待元素变为可见或满足其他条件时会阻塞脚本执行,直到条件满足。
    • page.locator() 创建定位器对象,但不会阻塞脚本执行。
  2. 用途:

    • page.wait_for_selector() 主要用于等待元素变得可用或可见,通常用于确保页面元素加载完成。
    • page.locator() 用于创建定位器对象,以便后续对元素执行操作。
  3. 操作执行:

    • page.wait_for_selector() 可以直接用来等待元素状态变化,但不能直接对元素执行操作。
    • page.locator() 创建的对象可以用来执行各种操作,如点击、填写表单等。

`wait_for()` 方法是 Playwright 库中的一个等待方法,它允许您等待指定条件的发生,然后继续执行后续代码。 具体来说,`wait_for()` 方法接受一个条件函数作为参数,该函数返回一个布尔值。在调用 `wait_for()` 方法时,Playwright 库将重复调用条件函数直到返回 `True`,或者超过指定的超时时间。如果在超时时间内条件函数返回了 `True`,则 `wait_for()` 方法返回 `True`;否则,将引发 `TimeoutError` 异常。 以下是 `wait_for()` 方法的基本语法: ```python await page.wait_for(selector_or_function_or_timeout, options=None, *args, **kwargs) ``` 其中,`selector_or_function_or_timeout` 参数可以是以下之一: - CSS 选择器:一个字符串,指定要等待元素出现的 CSS 选择器。 - JS 表达式:一个字符串,指定一个 JavaScript 表达式,该表达式返回 `true` 或 `false`。 - 超时时间:一个整数或浮点数,指定等待的最长时间(以毫秒为单位)。 `options` 参数是一个可选的字典,用于指定其他选项,例如 `polling` 和 `timeoutMessage`。 以下是一个使用 `wait_for()` 方法等待元素出现的示例: ```python await page.goto('https://example.com') await page.wait_for_selector('#my-element') print('Element is now visible') ``` 在上面的示例中,`wait_for_selector()` 方法会等待页面中具有 `#my-element` ID 的元素出现。一旦元素出现,`wait_for_selector()` 方法将返回,然后打印一条消息。 希望这可以帮助您理解 `wait_for()` 方法的工作原理和用法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值