qianaonan 发表于 2022-10-18 22:48

各位大佬,python的selenium如何图中的下拉框自动选成我想要的

下拉框未选中时代码如图
选中下拉选项时代码如图
选中选项时代码如图
就是想爬这个表格,但是这个下拉框如何选成自己想要的选项。

zach14c 发表于 2022-10-18 22:48

本帖最后由 zach14c 于 2022-10-19 16:29 编辑

ant design + react 确实比较花点时间

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

dr = webdriver.Firefox(executable_path='/home/aa/bin/geckodriver')
dr.get('https://09x.ant.design/components/pagination/')

element = WebDriverWait(dr, 10).until(
    EC.presence_of_element_located((By.ID, "components-pagination-demo-changer"))
)
demo_div = dr.find_element_by_id('components-pagination-demo-changer')
opt_btn_span = demo_div.find_elements_by_class_name('ant-select-arrow')
opt_btn_span.click()
WebDriverWait(dr, 10).until(
    EC.visibility_of_element_located((By.CLASS_NAME, "ant-select-dropdown-menu-item"))
)
opt_menus = dr.find_elements_by_class_name('ant-select-dropdown-menu-item')
for opt_menu in opt_menus:
    if opt_menu.text == '40 条/页':
      dr.execute_script('arguments.click()', opt_menu)

by黑胡椒 发表于 2022-10-18 22:56

我只能说 基本上全部操作的 都可以 元素点+元素点击

BlueQAQ 发表于 2022-10-19 08:58

不知道是不是多个表,如果就是这一个表的话,看看前端代码里是不是能改一页显示数量,直接改成999999 复制一下就行。

狐白本白 发表于 2022-10-19 09:02

如果前段是直接改的数 那你直接请求对应网页就行了

chinaqin 发表于 2022-10-19 09:10

我的建议是: 1.找到点击下拉框的xpath然后利用 find_element_by_xpath把下拉框显示出来;
2. 再把下拉框里面的选项列出列,我遇见过的是标签: find_elements(by_tag_name,"li");
3.最好出来的就是一个列表 想要哪个选项就 .click

三滑稽甲苯 发表于 2022-10-19 10:32

找到对应元素用.click就行

MIAIONE 发表于 2022-10-19 10:34

为什么不用更强的Microsoft Playwright, 跟selenium一样, 可以xpath, click一起用, 比如你这个可以先waitfor等加载完成, 然后按照xpath单击,然后获取list的xpath再动态点击

xyoung519 发表于 2022-10-19 14:21

本帖最后由 xyoung519 于 2022-10-19 14:22 编辑

使用选择列表元素 | Selenium
https://www.selenium.dev/zh-cn/documentation/webdriver/support_features/select_lists/
页: [1]
查看完整版本: 各位大佬,python的selenium如何图中的下拉框自动选成我想要的