• selenium---滚动日历定位(TouchActions)


      前几天见测试群里有人问,如果定位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的一种用法,其他的用法,以后也会慢慢进行补充。点个关注,不容错过~~

  • 相关阅读:
    [Alpha]Scrum Meeting#5
    [Alpha]Scrum Meeting#6
    [Alpha]Scrum Meeting#4
    [Alpha]Scrum Meeting#3
    【Beta阶段】第三次Scrum Meeting
    [技术博客]基于动态继承类、WebDriver的浏览器兼容性测试框架搭建
    【Beta阶段】第二次Scrum Meeting
    【Beta阶段】第一次Scrum Meeting
    [技术博客] 较科学的排名算法介绍与实现
    [技术博客]数据库的评测与选择
  • 原文地址:https://www.cnblogs.com/qican/p/14062901.html
Copyright © 2020-2023  润新知