美文网首页我爱编程
selenium 操作android chrome浏览器

selenium 操作android chrome浏览器

作者: leyu | 来源:发表于2017-12-27 13:14 被阅读0次

    关于如何利用selenium拉起android端chrome浏览器,可以参考谷歌文档
    https://sites.google.com/a/chromium.org/chromedriver/getting-started/getting-started---android

    import time
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    from selenium.webdriver.common.action_chains import ActionChains
    # pc端chrome模拟手机设备
    def get_pc_driver():
        mobile_emulation = {"deviceName": "Google Nexus 5"}
        chrome_options = Options()
        chrome_options.add_experimental_option("mobileEmulation", mobile_emulation)
        driver = webdriver.Chrome(chrome_options=chrome_options)
        driver.get("http://m.iqiyi.com/v_19rremvmak.html")
        time.sleep(5)
        return driver
    
    # 拉起android的chrome
    def get_driver():
        capabilities = {'chromeOptions': {'androidPackage': 'com.android.chrome'}}
        driver = webdriver.Remote('http://localhost:9515', capabilities)
        driver.get("http://m.iqiyi.com/v_19rremvmak.html")
        return driver
    

    拿到driver后,大多数操作其实跟pc是一样的,但有一些会遇到问题,下面总结一下,方便以后查询

    遇到的问题

    获取元素的x,y坐标和元素大小
    >>>driver=get_driver()
    >>>driver.get("http://m.iqiyi.com/v_19rremvmak.html")
    >>>seek_btn = driver.find_element_by_class_name('progress-load')
    >>>seek_btn.location
    {'x': 89, 'y': 262}
    >>>seek_btn.size
    {'height': 2, 'width': 182}
    
    如何点击固定坐标位置

    我遇到的场景是,我打开了一个视频播放页,需要拖动进度条,改变当前的视频进度,尝试过如下办法。
    action_chains文档:
    http://blog.csdn.net/huilan_same/article/details/52305176
    touch_actions文档:https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.touch_actions.html

    # PC可以拖动的方法有
    from selenium.webdriver.common.action_chains import ActionChains
    driver=get_driver()
    # 方法一,seek_btn右侧的位置140px处,点击
    ActionChains(driver).move_to_element_with_offset(seek_btn,140,0).click().perform()
    # 方法二,拖动seek_btn到坐标(330,258)
    # 注意坐标是目标位置的绝对坐标,比如水平拖动,yoffset并不是0.
    ActionChains(driver).drag_and_drop_by_offset(seek_btn,330,258).perform()
    # 方法三,无效,不知道为什么,按理应该也可以的。将鼠标移动到坐标(330,258),然后点击。
    ActionChains(driver).move_by_offset(330,258).click().perform()
    # 利用touch_actions,
    # 注意每次perform后,都要重新赋值tactions,不然速度永远是第一次设置的速度,速度太快也不行
    tactions = TouchActions(driver)
    tactions.flick_element(b,100,0,1000).perform()
    
    

    相关文章

      网友评论

        本文标题:selenium 操作android chrome浏览器

        本文链接:https://www.haomeiwen.com/subject/plzdgxtx.html