当前位置: 首页 > article >正文

selenium记录Spiderbuf例题C02

防止自己遗忘,故作此为记录。

这套题牵扯到滑块。

步骤:

(1)进入例题,需要找到滑块与滑条。

需要注意的是,只能通过css选择器来筛选。

WebDriverWait(driver, 15).until(expected_conditions.visibility_of_element_located((By.CSS_SELECTOR, "#slider")))
slider: object = driver.find_element(By.CSS_SELECTOR, "#slider")
container: object = driver.find_element(By.CSS_SELECTOR, "#container")

 (2)之后需要动作链来操作。

但这里有个坑,就是滑过去了也不会使js刷新。

之后呢,我尝试用puautogui来拖拽,也尝试过了多重点击都没用。

最后我是连续拖了两次才解决的。

chain = ActionChains(driver, 15)
chain.drag_and_drop_by_offset(slider, container.size["width"], -container.size["height"])
chain.drag_and_drop_by_offset(slider, container.size["width"], -container.size["height"])
chain.perform()

总代码:

# -*- coding: utf-8 -*-
# -*- file: C02.py  -*-

from selenium.webdriver import Chrome
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.chrome.options import Options as ChromeOptions
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.action_chains import ActionChains
from time import sleep

target_url: str = r"https://www.spiderbuf.cn/playground/c02"

service: object = ChromeService(r"c02\chromedriver-win64\chromedriver.exe")
options: object = ChromeOptions()
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_argument("--disable-blink-features=AutomationControlled")

driver: object = Chrome(service=service, options=options)

driver.get(target_url)

WebDriverWait(driver, 15).until(expected_conditions.visibility_of_element_located((By.CSS_SELECTOR, "#slider")))
slider: object = driver.find_element(By.CSS_SELECTOR, "#slider")
container: object = driver.find_element(By.CSS_SELECTOR, "#container")

chain = ActionChains(driver, 15)
chain.drag_and_drop_by_offset(slider, container.size["width"], -container.size["height"])
chain.drag_and_drop_by_offset(slider, container.size["width"], -container.size["height"])
chain.perform()

WebDriverWait(driver, 10).until(expected_conditions.visibility_of_element_located((By.XPATH, r"//tbody/tr/td[3]")))
res: list = driver.find_elements(By.XPATH, "//tbody/tr/td[3]")

print(sum([eval(e.text) for e in res]) / len(res))


http://www.kler.cn/a/531530.html

相关文章:

  • 本地部署DeepSeek-R1模型(新手保姆教程)
  • Windows图形界面(GUI)-QT-C/C++ - QT Stacked Widget
  • Spring Boot Web项目全解析:从前端请求到后端处理
  • 深入浅出并查集(不相交集合实现思路)
  • 无用知识之:std::initializer_list的秘密
  • 智能小区物业管理系统打造高效智能社区服务新生态
  • 神经网络参数量和运算量的计算- 基于deepspeed库和thop库函数
  • 论文paper(更新...)
  • Apache Hudi数据湖技术应用在网络打车系统中的系统架构设计、软硬件配置、软件技术栈、具体实现流程和关键代码
  • P7497 四方喝彩 Solution
  • Linux+Docer 容器化部署之 Shell 语法入门篇 【Shell 循环类型】
  • Ollama教程:轻松上手本地大语言模型部署
  • linux库函数 gettimeofday() localtime的概念和使用案例
  • kamailio源文件modules.lst的内容解释
  • 通信方式、点对点通信、集合通信
  • SpringBoot中关于knife4j 中的一些相关注解
  • 鸢尾花书《编程不难》01---基本介绍和Jupyterlab的上手
  • 无人机PX4飞控 | PX4源码添加自定义uORB消息并保存到日志
  • Codeforces Round 1002 (Div. 2)(A-D)
  • FBX SDK的使用:读取Mesh
  • centos stream 9 安装 libstdc++-static静态库
  • 【优先算法】专题——前缀和
  • 洛谷[USACO08DEC] Patting Heads S
  • 详解Linux系统的终端(Terminal)以及分类(各种tty开头的设备文件)
  • 蓝桥杯python基础算法(2-1)——排序
  • PHP Composer:高效依赖管理工具详解