网上教程很多。以下仅参考。
- time.sleep(3)
- print("滑动开始")
-
- driver.swipe(500,1500,500,500)
- print("滑动结束")
先定位元素组:
//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}")
直接修改以上代码。以下测试通过。
- # ########################## 定位数据区域,返回元素列表每次定位的有点多,所以使用字典去重 #########################################################
- 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}")
下一节,对每一个元素块内的文字进行提取