网上教程很多。以下仅参考。
1.swipe(坐标到坐标)
time.sleep(3)
print("滑动开始")
driver.swipe(500,1500,500,500)
print("滑动结束")
2. scroll(元素到元素)
先定位元素组:
//android.support.v7.widget.RecyclerView/android.widget.FrameLayout/android.view.ViewGroup/android.view.ViewGroup
以下代码,获取元素列表成功。我们要利用这些个元素进行滚动的。
以下代码,滚动成功。注意的是:我使用的是-2和1,因为我用-1和0时老是滚动失败,原因以后再找吧。
# ########################## 定位数据区域,返回元素列表每次定位的有点多,所以使用字典去重 #########################################################
try:
# 使用XPath定位带有index属性的FrameLayout元素
frame_layout_elements = WebDriverWait(driver, timeout, poll_frequency).until(
EC.presence_of_all_elements_located(
(By.XPATH, "//android.support.v7.widget.RecyclerView/android.widget.FrameLayout/android.view.ViewGroup/android.view.ViewGroup"))
)
print("元素列表长度:", len(frame_layout_elements))
for i in range(len(frame_layout_elements)):
print("元素列表:",frame_layout_elements[i])
print("准备元素滑动")
time.sleep(5)
driver.scroll(frame_layout_elements[-2], frame_layout_elements[1])
# 根据需要进一步操作找到的唯一FrameLayout元素
except Exception as e:
print(f"无法定位到FrameLayout元素: {e}")
3.drag_and_drop(元素,无素)
直接修改以上代码。以下测试通过。
# ########################## 定位数据区域,返回元素列表每次定位的有点多,所以使用字典去重 #########################################################
try:
# 使用XPath定位带有index属性的FrameLayout元素
frame_layout_elements = WebDriverWait(driver, timeout, poll_frequency).until(
EC.presence_of_all_elements_located(
(By.XPATH, "//android.support.v7.widget.RecyclerView/android.widget.FrameLayout/android.view.ViewGroup/android.view.ViewGroup"))
)
print("元素列表长度:", len(frame_layout_elements))
for i in range(len(frame_layout_elements)):
print("元素列表:",frame_layout_elements[i])
print("准备元素滑动")
time.sleep(5)
driver.drag_and_drop(frame_layout_elements[-2], frame_layout_elements[1])
# 根据需要进一步操作找到的唯一FrameLayout元素
except Exception as e:
print(f"无法定位到FrameLayout元素: {e}")
下一节,对每一个元素块内的文字进行提取