python3+selenium调试过程:如何用python shell新建打开.py文档

本文分享了一次在PythonShell中运行代码的经历,初学者可能会遇到复制代码粘贴到PythonShell导致的错误。文章提供了正确的做法:通过PythonShell的File菜单新建或打开.py文件,然后运行,避免了直接粘贴代码带来的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天复习巩固编码练习时,对着书来运行练习,发现有要求在python shell里面练习,在编程工具写好了代码,在python shell里面直接将复制的代码粘贴上去,结果可想而知,一大堆的报错,但是我也不能气馁啊,我又查找了网上的资料,结果自己拍了下自己的大脑门,python shell菜单栏那里明显的有file和run的菜单,直接在file里面new或者 open来 run *.py文件不就好了吗.

<think>好的,我现在需要帮助用户解决在启动雷电模拟器后运行Python脚本时遇到的问题。用户提到他们打开了第二个APP,但执行Python脚本时可能遇到了问题。首先,我要确定用户的具体问题是什么,但用户并没有明确说明错误信息或现象,只是列出了已安装的包名。这可能意味着用户期望的APP没有正确启动,或者Python脚本未能与模拟器中的应用交互。 接下来,我需要考虑用户可能的意图。用户可能在尝试通过Python脚本自动化操作模拟器中的两个应用(com.mojian.fmz.neice和com.mojian.fmz)。常见的情况是使用ADB命令或自动化工具如Appium进行控制。用户的问题可能涉及连接问题、包名错误,或者脚本本身的逻辑错误。 首先,验证ADB连接是否正确。之前的对话中用户遇到了ADB连接问题,所以需要确认当前是否已成功连接。如果仍然存在连接问题,可能需要重新检查端口和ADB服务状态。用户之前使用的端口是5554,但正确的雷电模拟器端口通常是5555或根据多开实例递增的端口,比如5565。用户可能需要使用正确的端口重新连接。 其次,检查包名是否正确。用户提供的包名是com.mojian.fmz.neice和com.mojian.fmz,需要确认这两个应用是否确实安装在模拟器中。可以通过ADB命令adb shell pm list packages来列出所有已安装的包名,确保目标应用存在。 然后,分析Python脚本的内容。用户脚本路径是E:\PYthonterm\C!.py,可能包含启动应用或执行操作的ADB命令。例如,使用adb shell am start -n package/activity来启动应用。需要确认脚本中使用的包名和Activity名称是否正确。如果Activity名称不正确,应用可能无法启动。 另外,用户可能在同时打开两个应用时遇到问题,比如第二个应用无法启动或焦点切换问题。需要确保脚本中有适当的延迟或等待机制,让第一个应用完全启动后再启动第二个。此外,模拟器的性能设置也可能影响多任务处理,比如内存不足导致第二个应用无法启动。 还要考虑权限问题,比如应用是否需要额外的权限才能运行,或者ADB是否有足够的权限控制模拟器。另外,防火墙或安全软件可能会拦截ADB通信,导致脚本执行失败。 如果用户未提供具体错误信息,可能需要建议他们检查脚本的输出日志,或者添加调试语句来捕获问题所在。例如,在Python脚本中打印ADB命令的执行结果,确认是否有异常抛出。 最后,总结可能的解决方案步骤,包括验证ADB连接、检查包名和Activity名称、审查Python脚本逻辑、处理多应用启动的时序问题,以及检查系统权限和防火墙设置。同时,提供示例命令和代码片段,帮助用户修改他们的脚本,并建议调试方法以进一步定位问题。</think>--- ### 一、问题定位 根据描述,你希望通过Python脚本在雷电模拟器中操作两个已安装的APP(包名 `com.mojian.fmz.neice` 和 `com.mojian.fmz`),但操作未达到预期。常见问题可能包括: - **ADB连接异常** - **包名/Activity名错误** - **多应用操作时序冲突** - **脚本权限或逻辑问题** --- ### 二、关键排查步骤 #### 🔍 **第一步:确认ADB连接状态** 1. **检查模拟器ADB端口监听** ```powershell # 使用telnet测试端口(雷电默认5555) telnet 127.0.0.1 5555 ``` - 若连接失败,需重启ADB服务: ```powershell adb kill-server && adb start-server adb connect 127.0.0.1:5555 # 确保显示 connected ``` 2. **验证设备可见性** ```powershell adb devices -l ``` - 预期输出示例: ```text List of devices attached emulator-5555 device product:leidian model:雷电模拟器 ``` --- #### 🔍 **第二步:验证包名准确性** 1. **获取已安装包列表** ```powershell adb shell pm list packages | findstr "mojian" ``` - 确认输出包含 `com.mojian.fmz.neice` 和 `com.mojian.fmz` 2. **获取Activity入口** ```powershell # 获取APP主Activity(需已打开目标APP界面) adb shell dumpsys window | findstr "mCurrentFocus" ``` - 示例输出: ```text mCurrentFocus=Window{... com.mojian.fmz/.MainActivity} ``` --- #### 🔍 **第三步:调试Python脚本逻辑** 1. **基础操作命令验证** ```python import subprocess # 启动第一个APP subprocess.run(["adb", "shell", "am", "start", "-n", "com.mojian.fmz.neice/.MainActivity"]) # 等待3秒确保启动完成 import time time.sleep(3) # 启动第二个APP subprocess.run(["adb", "shell", "am", "start", "-n", "com.mojian.fmz/.MainActivity"]) ``` > ⚠️ **注意**: > - 替换 `.MainActivity` 为实际Activity名(通过 `dumpsys window` 获取) > - 若需后台启动,添加 `-W` 参数(等待启动完成) 2. **常见错误处理** - **错误:`Activity not found`** ```text Error: Activity not started: Intent { act=android.intent.action.MAIN ... } ``` - 解决方案:检查包名和Activity名是否匹配 - **错误:`SecurityException`** ```text java.lang.SecurityException: Permission Denial ``` - 解决方案:确认模拟器已开启 `USB调试` 和 `安装未知应用` 权限 --- ### 三、高级优化建议 #### 🛠️ **多应用操作时序控制** 1. **强制等待与隐式等待** ```python from appium import webdriver from selenium.webdriver.support.ui import WebDriverWait # 启动第一个APP后,等待元素加载 WebDriverWait(driver, 10).until( lambda x: x.find_element_by_id("com.mojian.fmz.neice:id/btn_start") ) ``` 2. **使用Appium Desktop录制操作** - 通过Appium Inspector捕获元素定位符 - 生成Python-WebDriver代码片段 --- #### 🛠️ **ADB命令增强** 1. **模拟用户点击/滑动** ```python # 点击坐标 (x=500,y=800) subprocess.run(["adb", "shell", "input", "tap", "500", "800"]) # 滑动操作(从500,1000到500,500,持续200ms) subprocess.run(["adb", "shell", "input", "swipe", "500", "1000", "500", "500", "200"]) ``` 2. **捕获界面截图** ```python subprocess.run(["adb", "exec-out", "screencap", "-p", ">", "screen.png"]) ``` --- ### 四、流程图解 ```mermaid graph TD A[启动雷电模拟器] --> B[运行Python脚本] B --> C{ADB连接成功?} C -->|否| D[检查端口/重启ADB] C -->|是| E{包名正确?} E -->|否| F[通过adb shell pm list验证] E -->|是| G{Activity存在?} G -->|否| H[通过dumpsys window获取] G -->|是| I[执行启动命令] I --> J{出现权限错误?} J -->|是| K[开启USB调试/未知来源安装] J -->|否| L[操作成功] ``` --- ### 五、补充说明 - **雷电模拟器多开时的ADB端口规则**: - 第1个实例:`5555` - 第2个实例:`5565` - 第3个实例:`5575`(以此类推) - **Python脚本调试技巧**: ```python # 打印ADB命令执行结果 result = subprocess.run(["adb", "devices"], capture_output=True, text=True) print("ADB输出:", result.stdout) ``` > 💡 **终极建议**:如果仍无法解决,建议在脚本中添加详细的日志记录,或使用 `Appium` + `WebDriver` 实现更稳定的自动化控制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值