问答 大佬救命! selenium 使用 TouchActions 方法,没有报错,也不好使

test · 2022年05月01日 · 最后由 Duke 回复于 2022年05月06日 · 6415 次阅读

大佬麻烦看看,使用 TouchActions.scroll_from_element() 方法,传入的了元素和坐标,没有报错,但是也不好使,不知道啥原因,有懂得大佬给瞅瞅嘛.谢谢!

from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep

options = webdriver.ChromeOptions()
options.add_experimental_option('w3c', False)
options.add_experimental_option("excludeSwitches", ['enable-automation'])

driver = webdriver.Chrome(options=options)
driver.get('https://www.jq22.com/yanshi4976')
sleep(3)
driver.switch_to.frame('iframe')
driver.find_element(By.CSS_SELECTOR, '#appDate').click()

dwwos = driver.find_elements(By.CSS_SELECTOR,'.dwwo')
year, month, date = dwwos[0], dwwos[1], dwwos[2]

action = webdriver.TouchActions(driver)
action.scroll_from_element(year,0, 5).perform()
sleep(2)
action.scroll_from_element(month,0,30).perform()
sleep(2)
action.scroll_from_element(date,0,10).perform()

浏览器截图


代码没报错,但是不好使

最佳回复

网页有打开吗?

test #2 · 2022年05月05日 Author
羽寰 回复

页面有打开,并且点击了时间滑动的控件,然后没有报错,也没有执行

共收到 4 条回复 时间 点赞

网页有打开吗?

test #2 · 2022年05月05日 Author
羽寰 回复

页面有打开,并且点击了时间滑动的控件,然后没有报错,也没有执行

  1. 拖拽元素
    self.driver.scroll(start_element, end_element)
    start_element = "起始点的元素定位"
    end_element = "终点元素定位"
    以上元素定位例子:
    start_element = self.driver.find_element_by_id("需要的 id") 可定义为年的元素位置
    end_element = self.driver.find_element_by_xpath("xpath 语法") 可定义为【确认按钮】的元素位置
    即从年的滚轮框往下滑动,但是具体滑到多少年这个就不确定了,其他的月、日同理,往今天和取消的方向滑动

  2. 点到点滑动
    TouchAction(self.driver).press(x=x1, y=y1).move_to(x=x2, y=y2).wait(duration).release().perform()

action.scroll_from_element(year,0, 5).perform()

这个地方, 'year' 指的是想移动哪个元素,'0' 的位置指的是 x 轴的偏移量, '5' 的位置指的是 y 轴的偏移量。
举个例子,我们现在是2022年5月6日, 你希望让他变成2022年6月8日。
action.scroll_from_element(month,0, 180).perform()
action.scroll_from_element(day,0, 360).perform()
因为滚动条是上下选择,所以 x 轴偏移量为 0,只有 y 轴上下偏移。
而为什么是 180 和 360, 这个取决于前端页面的设计。 你打开那个时间的网页,定位到"2022 年", 网页设计的这个区域矩形为:height:180px,min-weight:70px。 所以上下一个 “单位” 就是移动 1 个 180px。
月份:5-->6, month,0,180
日期:6-->8, day,0,360 (180+180)

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册