赞
踩
0.使用inspector时,一定要把不相关的如weditor啥的退出去,否则,净是事。
第一个位置,有时0.0.0.0,不可以的话,你就用这个。
第二个位置,抄上。
直接点击第三个启动。不要问为什么,问就是。我也不知道。
错误
Failed to create session. An unknown server-side error occurred while processing the command. Original error: You must include a platformName capability
添上
"appium:automationName": "UiAutomator2"
再次启动。OK了进来了。
自动点击手机上的某团,打开它。
一个一个的点复制。
- 'getCurrentActivity' "com.meituan.android.pt.homepage.activity.MainActivity"
- 'getCurrentPackage' "com.sankuai.meituan"
返回修改
- {
- "appium:platformName": "Android",
- "appium:automationName": "UiAutomator2",
- "appium:appPackage": "com.sankuai.meituan",
- "appium:appActivity": "com.meituan.android.pt.homepage.activity.MainActivity"
- }
其他信息模仿吧。
- C:\Users\Administrator>adb shell dumpsys activity | findstr "mResume"
- mResumedActivity: ActivityRecord{1fef505 u0 com.sankuai.meituan/com.meituan.android.pt.homepage.activity.MainActivity t1097}
-
- from appium import webdriver
- from appium.options.android import UiAutomator2Options
- desired_caps = {
- "platformName": "Android",
- "platformVersion": "10",
- "deviceName": "Q5X7N19605002672",
- "appium:appPackage": "com.sankuai.meituan",
- "appium:appActivity": "com.meituan.android.pt.homepage.activity.MainActivity",
- "unicodeKeyboard": True,
- "resetKeyboard":True,
- "noReset":True,
- "appium:newCommandTimeout": 6000,
- "appium:automationName": "UiAutomator2"
- }
-
- if desired_caps is not None:
- driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', options=UiAutomator2Options().load_capabilities(desired_caps))
- else:
- raise ValueError("desired_caps must not be None")
运行成功。
利用代码启动某团,一定要利用pycharm中的代码进行,否则无效,原理很简单。就是通过appium互动留下的信息进行启动的。
再次刷新附加
界面示例:
有一个结果,点击一下。看手机是否正常反映
有反映,记录之
(//android.widget.ImageView[@resource-id="com.sankuai.meituan:id/channel_icon"])[5]
方法同上。
输入框定位后,点击一下。
//android.widget.LinearLayout[@resource-id="com.sankuai.meituan:id/minutes_animte_action_search"]/android.widget.LinearLayout[1]
进入新窗口
通过应用源一级级定位到最低级的编辑框位置。输入想要搜索的关键词。
//android.widget.EditText[@resource-id="com.sankuai.meituan:id/txt_search_keyword"]
如下图:
//android.widget.LinearLayout[@resource-id="com.sankuai.meituan:id/search_tv"]
来到以下页面。
通过应用源一级级的定位,不再多说。
(//android.widget.FrameLayout[@resource-id="com.sankuai.meituan:id/mach_container_wrapper"])[2]
来到如图:
提醒,以上其实是XPATH定位,不是最推荐的,但目前,用这个就行。
以下代码,完整无伤通过。
-
- from appium import webdriver
- from appium.options.android import UiAutomator2Options
- desired_caps = {
- "platformName": "Android",
- "platformVersion": "10",
- "deviceName": "Q5X7N19605002672",
- "appium:appPackage": "com.sankuai.meituan",
- "appium:appActivity": "com.meituan.android.pt.homepage.activity.MainActivity",
- "unicodeKeyboard": True,
- "resetKeyboard":True,
- "noReset":True,
- "appium:newCommandTimeout": 6000,
- "appium:automationName": "UiAutomator2"
- }
-
-
- driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', options=UiAutomator2Options().load_capabilities(desired_caps))
-
- # 设置超时时间和重试间隔
- timeout = 10
- poll_frequency = 1
- from selenium.webdriver.common.by import By
- from selenium.webdriver.support.ui import WebDriverWait
- from selenium.webdriver.support import expected_conditions as EC
-
- ####################### 点击超市便利########################################################
- element = WebDriverWait(driver, timeout, poll_frequency).until(
- EC.element_to_be_clickable((By.XPATH, '(//android.widget.ImageView[@resource-id="com.sankuai.meituan:id/channel_icon"])[5]'))
- )
- element.click()
- ######################### 点击搜索框########################################################
- element = WebDriverWait(driver, timeout, poll_frequency).until(
- EC.element_to_be_clickable((By.XPATH, '//android.widget.LinearLayout[@resource-id="com.sankuai.meituan:id/minutes_animte_action_search"]/android.widget.LinearLayout[1]'))
- )
- element.click()
- ##################### 使用显式等待定位并输入文本############################################################
- try:
- search_box = WebDriverWait(driver, timeout, poll_frequency).until(
- EC.presence_of_element_located((By.XPATH, "//android.widget.EditText[@resource-id='com.sankuai.meituan:id/txt_search_keyword']"))
- )
- search_box.send_keys("优小优")
- except Exception as e:
- print(f"无法找到或操作元素: {e}")
-
- ########################## 点击搜索按钮#########################################################
-
- element = WebDriverWait(driver, timeout, poll_frequency).until(
- EC.element_to_be_clickable((By.XPATH, '//android.widget.LinearLayout[@resource-id="com.sankuai.meituan:id/search_tv"]'))
- )
- element.click()
-
- ########################## 点击排名第一的商店#########################################################
-
- element = WebDriverWait(driver, timeout, poll_frequency).until(
- EC.element_to_be_clickable((By.XPATH, '(//android.widget.FrameLayout[@resource-id="com.sankuai.meituan:id/mach_container_wrapper"])[2]'))
- )
- element.click()
-
希望你也能一次无伤通过。
下一节,打算获取其商品数据。并保存之。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。