Appium+Python:踩坑小合集

本文档记录了使用Appium进行自动化测试时遇到的两个主要问题及解决方案。首先,针对'could not connect to server'错误,解决办法是确保command_executor的端口与Appium服务器配置一致,例如设置为4723。其次,检查Appium日志以定位启动错误,如Android权限问题。最后,当提示'aapt不是内部命令'时,需要将系统环境变量PATH中aapt的路径设置为绝对路径。通过这些步骤,可以成功解决Appium连接问题和aapt命令执行问题。

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

1、appium 出现报错 “could not connect to server are you sure it’s running?”

在这里插入图片描述

如果要用appium去定位元素的话,应该需要去选择Automatic Server一栏

2、启动时碰到的坑

  • 错误提示:
D:\pycharm\Python\Scripts\python.exe C:/Users/Wheat/PycharmProjects/pythonProject/app_01day_project/demo1_appium入门.py
Traceback (most recent call last):
  File "D:\pycharm\Python\lib\site-packages\urllib3\connection.py", line 175, in _new_conn
    (self._dns_host, self.port), self.timeout, **extra_kw
  File "D:\pycharm\Python\lib\site-packages\urllib3\util\connection.py", line 96, in create_connection
    raise err
  File "D:\pycharm\Python\lib\site-packages\urllib3\util\connection.py", line 86, in create_connection
    sock.connect(sa)
ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:\pycharm\Python\lib\site-packages\urllib3\connectionpool.py", line 706, in urlopen
    chunked=chunked,
  File "D:\pycharm\Python\lib\site-packages\urllib3\connectionpool.py", line 394, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "D:\pycharm\Python\lib\site-packages\urllib3\connection.py", line 239, in request
    super(HTTPConnection, self).request(method, url, body=body, headers=headers)
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\http\client.py", line 1262, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\http\client.py", line 1308, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\http\client.py", line 1257, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\http\client.py", line 1028, in _send_output
    self.send(msg)
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\http\client.py", line 968, in send
    self.connect()
  File "D:\pycharm\Python\lib\site-packages\urllib3\connection.py", line 205, in connect
    conn = self._new_conn()
  File "D:\pycharm\Python\lib\site-packages\urllib3\connection.py", line 187, in _new_conn
    self, "Failed to establish a new connection: %s" % e
urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at 0x00000168E72F4588>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:/Users/Wheat/PycharmProjects/pythonProject/app_01day_project/demo1_appium入门.py", line 13, in <module>
    driver = Remote(command_executor='http://127.0.0.1:4444/wd/hub',desired_capabilities=desired_cap)
  File "D:\pycharm\Python\lib\site-packages\appium\webdriver\webdriver.py", line 274, in __init__
    AppiumConnection(command_executor, keep_alive=keep_alive), desired_capabilities, browser_profile, proxy
  File "D:\pycharm\Python\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 268, in __init__
    self.start_session(capabilities, browser_profile)
  File "D:\pycharm\Python\lib\site-packages\appium\webdriver\webdriver.py", line 364, in start_session
    response = self.execute(RemoteCommand.NEW_SESSION, parameters)
  File "D:\pycharm\Python\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 422, in execute
    response = self.command_executor.execute(driver_command, params)
  File "D:\pycharm\Python\lib\site-packages\selenium\webdriver\remote\remote_connection.py", line 421, in execute
    return self._request(command_info[0], url, body=data)
  File "D:\pycharm\Python\lib\site-packages\selenium\webdriver\remote\remote_connection.py", line 443, in _request
    resp = self._conn.request(method, url, body=body, headers=headers)
  File "D:\pycharm\Python\lib\site-packages\urllib3\request.py", line 79, in request
    method, url, fields=fields, headers=headers, **urlopen_kw
  File "D:\pycharm\Python\lib\site-packages\urllib3\request.py", line 170, in request_encode_body
    return self.urlopen(method, url, **extra_kw)
  File "D:\pycharm\Python\lib\site-packages\urllib3\poolmanager.py", line 375, in urlopen
    response = conn.urlopen(method, u.request_uri, **kw)
  File "D:\pycharm\Python\lib\site-packages\urllib3\connectionpool.py", line 796, in urlopen
    **response_kw
  File "D:\pycharm\Python\lib\site-packages\urllib3\connectionpool.py", line 796, in urlopen
    **response_kw
  File "D:\pycharm\Python\lib\site-packages\urllib3\connectionpool.py", line 796, in urlopen
    **response_kw
  File "D:\pycharm\Python\lib\site-packages\urllib3\connectionpool.py", line 756, in urlopen
    method, url, error=e, _pool=self, _stacktrace=sys.exc_info()[2]
  File "D:\pycharm\Python\lib\site-packages\urllib3\util\retry.py", line 574, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='127.0.0.1', port=4444): Max retries exceeded with url: /wd/hub/session (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x00000168E72F4588>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。'))

Process finished with exit code 1

  • 解决步骤
    第一步:
driver = Remote(command_executor='http://127.0.0.1:4723/wd/hub',desired_capabilities=desired_cap)   
command_executor的端口号一定要与appium上给你一致;这样就解决一部分的bug了

在这里插入图片描述
第二步:
查看一下appium里,哪里运行错误,发现发生了 Android 系统权限错误。然后顺着这个错误,发现启动参数的AppActivity少打了个t,为什么会少打这个t呢!!因为我笔记本键盘的t不好使!!!经常按不下去,我哭了啊!!!
教读 Appium 日志的文章:https://blog.youkuaiyun.com/weixin_46635091

错误提示:error running command: Error: activity and pkg are required to start an application

Encountered internal error running command: Error: activity and pkg are required to start an application

3、aapt dump badging 软件.apk ,提示aapt不是内部命令解决方式

系统变量的path,把相对路径改为绝对路径即可

### 解决方案 要在 PowerShell 上启用 `yarn.ps1` 脚本的执行权限,可以通过调整系统的执行策略来实现。以下是具体方法: #### 修改执行策略 PowerShell 提供了一个命令用于设置脚本的执行策略,即 `Set-ExecutionPolicy`。通过更改此策略,可以允许运行本地签名或不受限制的脚本。 运行以下命令以设置执行策略为 `RemoteSigned` 或 `Unrestricted` 模式: ```powershell Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser ``` 上述命令的作用范围限定于当前用户 (`CurrentUser`),从而避免影响其他用户的配置[^1]。 如果需要更宽松的控制(不推荐),可以选择 `Unrestricted` 模式: ```powershell Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser ``` #### 验证执行策略变更 完成修改后,可通过以下命令验证当前生效的执行策略: ```powershell Get-ExecutionPolicy -List ``` 这一步骤有助于确认所选模式已成功应用到目标作用域中[^2]。 #### 处理错误提示中的路径问题 当遇到类似 `C:\Program Files\nodejs\npm.ps1` 和 `C:\Users\Administrator\AppData\Roaming\npm\yarn.ps1` 文件被阻止的情况时,除了调整全局执行策略外,还可以针对单个脚本临时解除限制。例如,对于特定 `.ps1` 文件,可使用以下方式启动它而不受默认安全约束的影响: ```powershell powershell.exe -ExecutionPolicy Bypass -File "C:\path\to\your-script.ps1" ``` 不过这种方法仅适用于一次性操作场景,并不适合长期解决方案[^3]。 --- ### 注意事项 在生产环境中放宽执行策略可能带来安全隐患,请谨慎评估风险后再做决定。建议优先考虑最小化权限原则,只授予必要的访问级别给所需的应用程序和服务账户。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值