请优化代码通过提前加载全部菜单项的方式自动遍历读取浏览器里的各个菜单栏的属性
提前加载全部菜单项的方式可以通过使用递归遍历读取浏览器菜单栏的属性。下面是一个示例代码:
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
def get_menu_item_properties(driver, menu_element):
# 获取菜单项属性
menu_item_properties = {}
# 获取菜单项的文本
menu_item_properties['text'] = menu_element.text
# 获取菜单项的链接
menu_item_properties['href'] = menu_element.get_attribute('href')
# 获取菜单项的其他属性,根据需求自行添加
# menu_item_properties['attribute_name'] = menu_element.get_attribute('attribute_name')
# 获取菜单项的子菜单
sub_menu = menu_element.find_elements_by_xpath('.//ul/li')
if len(sub_menu) > 0:
# 递归获取子菜单项的属性
menu_item_properties['sub_menu'] = []
for sub_menu_item in sub_menu:
menu_item_properties['sub_menu'].append(get_menu_item_properties(driver, sub_menu_item))
return menu_item_properties
def traverse_menu(driver, menu_bar):
# 获取菜单栏的所有菜单项
menu_items = menu_bar.find_elements_by_xpath('.//ul/li')
menu_bar_properties = []
for menu_item in menu_items:
menu_bar_properties.append(get_menu_item_properties(driver, menu_item))
return menu_bar_properties
# 启动浏览器
driver = webdriver.Chrome()
# 打开网页
driver.get('https://example.com')
# 获取菜单栏元素
menu_bar = driver.find_element_by_id('menu-bar')
# 遍历菜单栏的属性
menu_bar_properties = traverse_menu(driver, menu_bar)
# 输出菜单栏的属性
print(menu_bar_properties)
# 关闭浏览器
driver.quit()
你需要根据实际情况修改代码中的网页地址和菜单栏元素的定位方式。代码中使用了Selenium库来模拟浏览器操作,需要提前安装Selenium库并下载对应的浏览器驱动。
原文地址: https://www.cveoy.top/t/topic/i3E1 著作权归作者所有。请勿转载和采集!