如何点击其他页面classname类型下拉菜单并获取值回传原页面
实现方案(基于Playwright/Puppeteer,与你已使用的page.click语法兼容)
核心思路
按「触发一级下拉→触发二级下拉→提取li值→跨页传值」四个步骤执行,全程用class选择器定位元素即可。
具体实现步骤
- 步骤1:触发hover类型的一级下拉菜单
用class选择器定位触发元素,执行hover操作后等待下拉窗口渲染完成:# 替换为你实际的一级触发元素class名 page.hover('.first-level-trigger') # 替换为你实际的下拉窗口class名,等待其可见 page.wait_for_selector('.dropdown-window', state='visible', timeout=3000) - 步骤2:触发二级下拉菜单
同理用class定位二级下拉的触发元素,触发后等待二级下拉的li元素加载完成:# 替换为你实际的二级触发元素class名,若需点击触发把hover换成click即可 page.hover('.second-level-trigger') # 替换为你实际的二级下拉列表class名,等待li元素可见 page.wait_for_selector('.second-dropdown-list li', state='visible', timeout=3000) - 步骤3:提取所有li标签的值存入列表
li_value_list = page.locator('.second-dropdown-list li').all_text_contents() # 可选:去除空白项和首尾空格 li_value_list = [item.strip() for item in li_value_list if item.strip()] - 步骤4:将列表值传回前一个页面
如果你是多标签页场景,提前保存前一个页面的page实例即可直接注入数据:
如果是跨域页面无法直接传值,可将列表序列化后存入# 假设你打开新标签页时已经保存了前页实例为prev_page prev_page.evaluate(""" (receivedList) => { // 此处可自定义前页接收逻辑,比如存入全局变量、填充到表单等 window.receivedDropdownList = receivedList } """, li_value_list)localStorage,两个页面监听存储变化即可完成数据传递。
注意事项
- class选择器的写法为
.类名,和你已掌握的id选择器#id名使用逻辑完全一致,替换为你实际HTML中的对应class名即可 - 若hover触发逻辑不生效,可替换为
page.click()触发,适配不同页面的交互规则
内容的提问来源于stack exchange,提问作者Rinki Mishra
相关产品推荐
相关产品推荐

