selenium记录Spiderbuf例题C02

发布于:2025-02-10 ⋅ 阅读:(93) ⋅ 点赞:(0)

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

这套题牵扯到滑块。

步骤:

(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))


网站公告

今日签到

点亮在社区的每一天
去签到