selenium 操作android chrome浏览器

关于如何利用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浏览器)