当我运行下面的程序来启动 python 程序以启动 android 应用程序时,我得到以下错误: raise MaxRetryError(_pool, url, error or ResponseError(cause)) urllib3.,python,http,appium,python-appium"/>

首页 > 解决方案 > Appium(使用 Python) - 无法启动应用程序(错误 /wd/hub/session(由 NewConnectionError 引起('

当我运行下面的程序来启动 python 程序以启动 android 应用程序时,我得到以下错误: raise MaxRetryError(_pool, url, error or ResponseError(cause)) urllib3.

问题描述

当我运行下面的程序来启动 python 程序以启动 android 应用程序时,我得到以下错误: raise MaxRetryError(_pool, url, error or ResponseError(cause)) urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='0.0.0.0 ',端口 = 4723):最大重试次数超过 url:/wd/hub/session(由 NewConnectionError('<urllib3.connection.HTTPConnection object at 0x000001B1D68BDB20> 引起:无法建立新连接:[WinError 10049] 请求的地址)在其上下文中无效'))

环境:Windows10、Appium v​​1.20.2

图书馆列表:

Appium-Python-Client~=1.0.2
selenium~=3.141.0
pytest~=6.1.1
allure-pytest
pytest-parallel
pytest-xdist
pytest-rerunfailures
pytest-sugar
pytest-json
pymysql~=0.10.1
sshtunnel~=0.1.5
requests~=2.24.0
invoke~=1.4.1
python-dotenv
pytest-html-reporter~=0.2.3


from appium import webdriver

desired_caps= {}
desired_caps['platformName']='Android'
desired_caps['automationName']='UiAutomator2'
desired_caps['platformVersion']='9'
desired_caps['deviceName']='TKX44XS8DAVWNRMZ'
desired_caps['app']='path/Android-NativeDemoApp-0.2.1.apk'
desired_caps['appPackage']='com.wdiodemoapp'
desired_caps['appActivity']='com.wdiodemoapp.MainActivity'
driver = webdriver.Remote('http://0.0.0.0:4723/wd/hub',desired_caps)

请帮忙。


至少有两种方法可以使用,只要用户旅程从它应该开始的地方开始,在他们试图到达的页面上,使其成为服务提供商发起的身份验证请求。作为基于 SAML 的联合中的服务提供者,您可以通过向身份提供者发送AuthnRequest来启动该过程。

第一种可用方法是通过跟踪 AuthnRequest 来实现的ID。在一个好的 SAML 实现中,AuthnRequest 的 ID 是大而随机的,并且在我们的一生中可能无法重复。SAML Profiles 规范在第 625-626 行说:

如果包含的消息是对 的响应<AuthnRequest>,那么该InResponseTo属性必须与请求的相匹配ID

因此,只要您跟踪您发送的 ID,您就可以将 RequestID与 Response联系起来inResponseTo

您可以使用的第二种方法是RelayState. 这是 AuthnRequest 的一个恰当命名的元素,您可以使用它来将状态转移到身份提供者并返回。这是一个您可以作为服务提供者使用的字段,响应者必须将其发回。Bindings 规范在第 265-271 行说:

一些绑定定义了用于保存和传送状态信息的“RelayState”机制。当这种机制用于传送请求消息作为 SAML 协议的初始步骤时,它对随后用于传送响应的绑定的选择和使用提出了要求。即,如果 SAML 请求消息伴随着 RelayState 数据,则 SAML 响应者必须使用同样支持 RelayState 机制的绑定返回其 SAML 协议响应,并且它必须将它与请求一起接收到的确切 RelayState 数据放入相应的 RelayState响应中的参数。

因此,您可以在该字段中放置一些东西,而 IdP 必须原封不动地复制它。您应该确保放入其中的内容不会损害用户或安全性,因此请注意您的使用方式。它最终会出现在某个地方的日志中。

标签: pythonhttpappiumpython-appium

解决方案


推荐阅读