前几天见测试群里有人问,如果定位web页面上的滚动日历,安静简单的定位,分享给大家
滚动日历
我们先看看滚动日历是什么样子的,下图就是安静在网上随便找的滚动日历内容。
手工操作
在写代码前,首先要弄清楚,手工测试的时候如何进行操作滚动日历的,手工测试时,我们通过鼠标上的滚轮进行操作的,通过向上或者向下进行滚动选择日期。那么问题来了,我们怎么控制鼠标的滚轮呢?前面介绍了鼠标的操作,其实还有鼠标的滚动没有给大家介绍,借此机会,进行补充
TouchActions
TouchActions是selenium中的一个库,主要用来进行操作H5页面上的一些鼠标操作,比如鼠标滑动,点击,拖动等
中文文档:https://python-selenium-zh.readthedocs.io/zh_CN/latest/7.2%20%E8%A1%8C%E4%B8%BA%E9%93%BE/
导入方法: from selenium.webdriver import TouchActions
主要方法有:
- double_tap(on_element) 双击
- flick_element(on_element, xoffset, yoffset, speed) 从元素开始以指定的速度移动
- long_press(on_element) 长按不释放
- move(xcoord, ycoord) 移动到指定的位置
- perform() 执行链中的所有动作
- release(xcoord, ycoord) 在某个位置松开操作
- scroll(xoffset, yoffset) #滚动到某个位置
- scroll_from_element(on_element, xoffset, yoffset) 从某元素开始滚动到某个位置
- tap(on_element) 单击
- tap_and_hold(xcoord, ycoord) 某点按住
本章处理日历操作主要运用了元素滚动内容,处理此操作,安静先整理下思路
1、定位日历上的元素
2、通过scroll_from_element(on_element, xoffset, yoffset) 方法进行滚动
如果没有用过方法的小伙伴们,可以查看下源码进行分析
def scroll_from_element(self, on_element, xoffset, yoffset): """ 从on_element开始触摸和滚动,通过xoffset和yoffset移动。 :Args: - on_element: The element where scroll starts. - xoffset: X offset to scroll to. - yoffset: Y offset to scroll to. """ self._actions.append(lambda: self._driver.execute( Command.TOUCH_SCROLL, { 'element': on_element.id, 'xoffset': int(xoffset), 'yoffset': int(yoffset)})) return self
其中xoffset,和yoffset表示X ,Y轴
注意:向上移动值负,向下移动值为正
方法也看了,思路也清楚了,动手写一写代码
from selenium import webdriver import time from selenium.webdriver import TouchActions driver = webdriver.Chrome() driver.get('https://www.jq22.com/yanshi3714') time.sleep(2) driver.switch_to.frame("iframe") driver.find_element_by_xpath('//*[@id="text"]').click() list = driver.find_elements_by_xpath('//*[@class="dwwo"]') year = list[0] month = list[1] day = list[2] a = TouchActions(driver) # 滑动月 a.scroll_from_element(month,0,-8).perform() # 滑动日 a.scroll_from_element(day,0,8).perform() # 滑动年 a.scroll_from_element(month,0,8).perform()
通过上面的动图发现,已经成功的进行了滚动,具体的实际范围的话,可能需要自己进行多次每次滚动多少进行选择了。
安静只是简单的介绍了TouchActions的一种用法,其他的用法,以后也会慢慢进行补充。点个关注,不容错过~~