传统的下拉菜单 Select 元素,由一个 Select + 一系列的 option 元素构成。
`<select id="source" name="source"> <option value="">--请选择--</option> <option value="1001">网络营销</option> <option value="1002">公开媒体</option> <option value="1003">合作伙伴</option> … </select> ` * 1 * 2 * 3 * 4 * 5 * 6 * 7
对于下拉菜单,我们操作时是先点击下拉选项,再在展开的选项中点击一项来完成选择。
如果用 Selenium 模拟,就需要先点击 Select 元素,再点击 Option,就稍微麻烦了一些。我们可以通过两种方法来处理。
1. 直接通过 Xpath 点击选项
通过 Xpath 点击直接选项,可以不用点击下拉,一句代码完成操作。
以上面的局部 HTML 代码为例:
`driver.find_element_by_xpath('//*[@id="source"]/option[@value="1002"]').click() ` * 1
2. 使用 Select 类
使用 Xpath 虽然可行,但是稍微缺乏一些灵活性。
在 WebDriver 中专门提供了一个 Select 类来处理下拉菜单。
`# 导入 Select 类 from selenium.webdriver.support.select import Select # 找到下拉菜单元素 e = driver.find_element_by_id('source') select = Select(e) # 按文本选择 select.select_by_visible_text('合作伙伴') ` * 1 * 2 * 3 * 4 * 5 * 6 * 7
Select 类中还提供了通过 option 索引选取、通过 value 值选取:
`select.select_by_index(1) select.select_by_value('1003') ` * 1 * 2
由于我们经常使用 index 和 visible text (可见文本) 的方式选择选项。所以我们简单封装一下:
from selenium.webdriver.common.by import By from selenium.webdriver.support.select import Select def select(driver, locator, option=0): e = Select(driver.find_element(*locator)) # 如果选项为整数,则通过 index 选择 if isinstance(option, int): e.select_by_index(option) # 如果选项为字符串,则通过 visible_text 选择 elif isinstance(option, str): e.select_by_visible_text(option) else: raise ValueError('只能通过index或可见文本进行下拉选项选择!') # 使用 select(driver, (By.ID, 'source'), '合作伙伴')
以上就是“Python + Selenium(十四)下拉菜单处理”的全部内容,希望对你有所帮助。
?
?关于Python技术储备
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、Python必备开发工具
三、Python视频合集
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
四、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
五、Python练习题
检查学习结果。
六、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
最后祝大家天天进步!!
上面这份完整版的Python全套学习资料已经上传至CSDN官方,朋友如果需要可以直接微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】。