1、问题描述
页面中有多个下拉框,每个下拉框的值都是点击下拉框后,调取后台接口动态获取,所有元素的属性都相同,通过xpath获取的是@id+,该id每次加载时也是动态生成的,所以无法精准定位需要的下拉值。
2、解决办法
通过分析,首先排除精确定位,可以先获取下拉框所有的值,通过for循环遍历,找到目标值后再click。方法很多,仅供参考。
from selenium import webdriver
from selenium.webdriver.common.by import By
# 操作Chrome浏览器,开始执行
browser = webdriver.Chrome()
browser.implicitly_wait(5)
browser.maximize_window()
browser.get('url')
# 点击下拉框,使页面加载动态下拉框值
browser.find_element(By.XPATH, '//*[@id="root"]/div/div/div/section/mai/div/div[2]/div/div[1]').click()
# 通过CSS_SELECTOR,根据下拉框值的共同class属性获取所有值,find_elements返回的是列表[]
elements = browser.find_elements(By.CSS_SELECTOR, 'li.ant-select-dropdown-menu-item')
# 遍历列表,element.text获取列表值并与实际需要选择的值比对,比对成功后点击该选项值
for element in elements:
print(element.text)
if element.text == '业务领域aa000001': # 可以是==变量
element.click() # 点击该选项
selenium
.common.exceptions.NoSuchElementException: Message: nosuch element: Unable to locate element:{“method”:“xpath”,“selector”:"/html/body/div[16]/div/div[2]/div/for
这里可以使用XPAN
定位
到下
拉
框,使用driver.find_element(By.XPATH,“路径”).click()进行点击
2、
定位
到下
拉
框里的筛选项元素,每次滚动都会变化
这里的内容要用XPAN
定位
到//div[@class=“rc-virtual-list-holder-inner”]
然后使用 鼠标滚动的方式,去获取所有的元素名称
def mouse_move(self,loc,page_nam
在进行网络数据采集和数据分析时,处理
动态
生成的下
拉
菜单是一个常见的挑战。
Selenium
是一个强大的
Python
库,可以让你自动化浏览器操作,比如从
动态
生成的下
拉
菜单中
选择
选项。这是一个常见的网页爬虫和数据收集者面临的挑战,但是
Selenium
让它变得简单。这段代码的目的是打开一个网页并
选择
指定的下
拉
菜单选项,然后等待一段时间。具体网页和下
拉
菜单的功能和目的需要根据实际情况来确定。
总结一下
python
+
selenium
select下
拉
选择
框
定位
处理的两种方式,以备后续使用时查询;
二、直接
定位
(XPath)
使用Firebug找到需要
定位
到的元素,直接右键复制XPath,使用find_element_by_xpath
定位
;
driver = webdriver.Firefox()
driver.get(https://www.baidu.com/)
driver.find_element_by_xpath().click()
三、间接
定位
(Select模块)
页面HTML源码如下所示:
<select id=nr name=NR>
使用
python
爬虫的
selenium
操作网页的下
拉
框。
以该网站为例:https://www.17sucai.com/pins/demo-show?id=5926
该网页下存在多个可供测试的下
拉
框。
基本脚手架代码:
from
selenium
.webdriver.support.ui import Select
from
selenium
import webdriver
import time
driver = webdriver.Chrome()
driver.get('https://www
selenium
的下
拉
选择
框。我们通常会遇到两种下
拉
框,一种使用的是html的标签select,另一种是使用input标签做的假下
拉
框。
后者我们通常的处理方式与其他的元素类似,点击或使用JS等。而对于前者,
selenium
给了有力的支持,就是Select类。
进行测试的网站:http://sahitest.com/demo/selectTest.htm
网页及对应源码:
二、关于导入方式
两种导入方式:
from
selenium
.webdriver.support.ui imp
select_by_index(index) 通过索引
定位
select_by_value(value) 通过value
值
定位
select_by_visible_text(text) 通过文本内容
定位
2.html 代码如下,大家可以复制一下内容然后保存为select.html格式