如何用Python Selenium拖动加密货币交易所的Vue滑块至100%
问题:Selenium拖动加密货币交易所Vue滑块设置100%购买量失败
我正在开发一套加密货币交易系统,因无法访问交易所API,采用Selenium自动化方案。目前遇到的问题是:无法拖动交易所中的Vue滑块,将购买量设置为100%。我怀疑是driver.find_element定位了错误元素,尝试过不同元素、用name和xpath定位,试过所有层级的类,但都无法拖动或选中滑块。
原代码
from selenium.webdriver import ActionChains from selenium import webdriver from selenium.webdriver.chrome.options import Options from time import sleep import time from selenium.webdriver.common.keys import Keys import io import subprocess #proc = subprocess.Popen("./ChannelMessages.py", stdout=subprocess.PIPE) chrome_options = Options() #chrome_options.add_argument('--no-sandbox') chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222") driver = webdriver.Chrome(options=chrome_options) executor_url = driver.command_executor._url session_id = driver.session_id print(session_id) print(executor_url) driver.get("https://www.hotbit.io/exchange?symbol=XRP_USDT") time.sleep(10) en = driver.find_element('xpath', '//*[@id="app"]/div[1]/div[2]/div/div/div/div[1]/div[1]/div[4]/ul/li/form[1]/section[1]/div[4]/div/div/div[1]') move = ActionChains(driver) move.click_and_hold(en).move_by_offset(50, 0).release().perform()
滑块HTML代码
<div data-v-33e6e6c8="" class="percent-box"><div class="vue-slider vue-slider-ltr v-left-slider" style="padding: 7px 0px; width: auto; height: 4px;"><div class="vue-slider-rail"><div class="vue-slider-process" style="height: 100%; top: 0px; left: 0%; width: 0%; transition-property: width, left; transition-duration: 0.5s;"></div><div class="vue-slider-marks"><div class="vue-slider-mark vue-slider-mark-active" style="height: 100%; width: 4px; left: 0%;"><div class="vue-slider-mark-step vue-slider-mark-step-active"></div></div><div class="vue-slider-mark" style="height: 100%; width: 4px; left: 25%;"><div class="vue-slider-mark-step"></div></div><div class="vue-slider-mark" style="height: 100%; width: 4px; left: 50%;"><div class="vue-slider-mark-step"></div></div><div class="vue-slider-mark" style="height: 100%; width: 4px; left: 75%;"><div class="vue-slider-mark-step"></div></div><div class="vue-slider-mark" style="height: 100%; width: 4px; left: 100%;"><div class="vue-slider-mark-step"></div></div></div><div aria-valuetext="0%" class="vue-slider-dot vue-slider-dot-hover" role="slider" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" aria-orientation="horizontal" tabindex="0" style="width: 14px; height: 14px; transform: translate(-50%, -50%); top: 50%; left: 0%; transition: left 0.5s ease 0s;"><div class="vue-slider-dot-handle"></div><div class="vue-slider-dot-tooltip vue-slider-dot-tooltip-top"><div class="vue-slider-dot-tooltip-inner vue-slider-dot-tooltip-inner-top"><span class="vue-slider-dot-tooltip-text">0%</span></div></div></div></div></div></div>
解决方法
问题已解决,需进行两处修改:
- 导入
By类:
from selenium.webdriver.common.by import By
- 修改元素定位代码:
en = driver.find_element(By.CLASS_NAME, 'v-left-slider')
内容的提问来源于stack exchange,提问作者arg
相关产品推荐
相关产品推荐

