为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Playwright for Python,如何从下拉列表中选择选项?

使用 Playwright for Python,如何从下拉列表中选择选项?

慕妹3146593 2023-10-31 21:49:41
这是关于 Playwright for Python 基本功能的问题的后续内容。如何从下拉列表中选择一个选项?此示例远程控制一个 vuejs 网站,该网站具有“苹果”、“香蕉”、“胡萝卜”、“橙子”等水果的下拉列表这里我想选择选项“香蕉”from playwright import sync_playwrightimport timeURL = '<my url>'with sync_playwright() as p:    browser = p.chromium.launch(headless=False)    page = browser.newPage()    page.goto(URL)    # identify this element by ID. Wait for it first    new_selector = 'id=name-fruit'    page.waitForSelector(new_selector)    handle = page.querySelector(new_selector)    # at this point I have the element and can print the content    print(handle.innerHTML())下拉列表 HTML 像这样<select data-v-c2cef47a="" id="name-fruit" autocomplete="true" class="form-select__select">    <option data-v-c2cef47a="" disabled="disabled" value=""><!----></option>    <option data-v-c2cef47a="" value="[object Object]"> Apple </option>    <option data-v-c2cef47a="" value="[object Object]"> Banana </option>    <option data-v-c2cef47a="" value="[object Object]"> Carrot </option>    <option data-v-c2cef47a="" value="[object Object]"> Orange </option> </select>在 Selenium 中,我会选择这样的选项from selenium.webdriver.support.ui import SelectSelect(handle).select_by_visible_text('Banana')  # Note: no spaces needed!Playwright 的 Javascript 文档有这个,这并不完全相同,因为它似乎同时识别了对象。// Single selection matching the labelawait page.selectOption('select#colors', { label: 'Blue' });如何在 Playwright for Python 中进行选择?我尝试了这两种方法,但没有任何反应。handle.selectOption("text=Banana") handle.selectOption("text= Banana ")
查看完整描述

5 回答

?
四季花海

TA贡献1811条经验 获得超5个赞

在尝试了许多不同的变体之后,我猜出了一个有效的语法

handle.selectOption({"label": "Banana"})


查看完整回答
反对 回复 2023-10-31
?
慕斯王

TA贡献1864条经验 获得超2个赞

Playwright for Python 的一个工作示例:

page.select_option('select#colors', label='Banana')

或者对于 JavaScript:

await page.selectOption('select#colors', { label: 'Banana' });


查看完整回答
反对 回复 2023-10-31
?
开满天机

TA贡献1786条经验 获得超12个赞

您还可以使用索引或值来选择选项:


handle.selectOption([{'label': 'Banana'}])  # selects 'Banana'

handle.selectOption([{'index': 3}])         # selects 'Carrot'

handle.selectOption([{'value': ''}])        # selects the empty option (works even though it is disabled)



查看完整回答
反对 回复 2023-10-31
?
猛跑小猪

TA贡献1858条经验 获得超8个赞

不需要句柄,直接使用页面或者框架即可。

使用剧作家-python:

page.select_option('select#name-fruit', label='Banana')
page.select_option('select#name-fruit', value='')


查看完整回答
反对 回复 2023-10-31
?
慕的地8271018

TA贡献1796条经验 获得超4个赞

如果您必须根据“包含”选择列表选项,这就是我使用的


基本上得到一个定位器来查找带有文本的选项


获取选项的全文


使用该全文来选择选项


  dropdown_locator = page.locator(DROPDOWN_LOCATOR)

  dropdown_locator = dropdown_locator.filter(has_text="Banana")

  options_txt = activity_locator.text_content()

  options = options_txt.split('\n')

  print("Monkey searching banana in " + str(options))

  full_label = ""

  for item in options:

      if "Banana" in item:

          full_label = item.strip()

  print(full_label)


  if len(full_label) != 0:

      page.select_option(DROPDOWN_LOCATOR, label=full_label)


查看完整回答
反对 回复 2023-10-31
  • 5 回答
  • 0 关注
  • 153 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信