首页 新闻 会员 周边 捐助

求指点使用appium做自动化测试连接模拟器时pycharm报错ValueError: Timeout value connect was <......>, but it must be an int, float or None.

0
[待解决问题]

Traceback (most recent call last):
File "D:\pyLearn\appcode\app_1.py", line 43, in <module>
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Python\Lib\site-packages\appium\webdriver\webdriver.py", line 234, in init
super().init(
File "D:\Python\Lib\site-packages\selenium\webdriver\remote\webdriver.py", line 286, in init
self.start_session(capabilities, browser_profile)
File "D:\Python\Lib\site-packages\appium\webdriver\webdriver.py", line 324, in start_session
response = self.execute(RemoteCommand.NEW_SESSION, w3c_caps)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Python\Lib\site-packages\selenium\webdriver\remote\webdriver.py", line 438, in execute
response = self.command_executor.execute(driver_command, params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Python\Lib\site-packages\selenium\webdriver\remote\remote_connection.py", line 290, in execute
return self._request(command_info[0], url, body=data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Python\Lib\site-packages\selenium\webdriver\remote\remote_connection.py", line 311, in _request
response = self._conn.request(method, url, body=body, headers=headers)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Python\Lib\site-packages\urllib3_request_methods.py", line 118, in request
return self.request_encode_body(
^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Python\Lib\site-packages\urllib3_request_methods.py", line 217, in request_encode_body
return self.urlopen(method, url, **extra_kw)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Python\Lib\site-packages\urllib3\poolmanager.py", line 422, in urlopen
conn = self.connection_from_host(u.host, port=u.port, scheme=u.scheme)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Python\Lib\site-packages\urllib3\poolmanager.py", line 303, in connection_from_host
return self.connection_from_context(request_context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Python\Lib\site-packages\urllib3\poolmanager.py", line 328, in connection_from_context
return self.connection_from_pool_key(pool_key, request_context=request_context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Python\Lib\site-packages\urllib3\poolmanager.py", line 351, in connection_from_pool_key
pool = self._new_pool(scheme, host, port, request_context=request_context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Python\Lib\site-packages\urllib3\poolmanager.py", line 265, in _new_pool
return pool_cls(host, port, **request_context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Python\Lib\site-packages\urllib3\connectionpool.py", line 196, in init
timeout = Timeout.from_float(timeout)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Python\Lib\site-packages\urllib3\util\timeout.py", line 190, in from_float
return Timeout(read=timeout, connect=timeout)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Python\Lib\site-packages\urllib3\util\timeout.py", line 119, in init
self._connect = self._validate_timeout(connect, "connect")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Python\Lib\site-packages\urllib3\util\timeout.py", line 156, in _validate_timeout
raise ValueError(
ValueError: Timeout value connect was <object object at 0x000001BF70FB47F0>, but it must be an int, float or None.

Process finished with exit code 1

一直显示超时、appium也没有反应或者报这种错误No route found.Setting content type to 'text/plain'(环境配置检查过了没发现什么问题)

来杯丞汁⁶的主页 来杯丞汁⁶ | 菜鸟二级 | 园豆:204
提问于:2023-05-24 14:54
< >
分享
所有回答(4)
0


看看参数是不是传的有问题

ftonece | 园豆:202 (菜鸟二级) | 2023-05-24 21:09
0

这个错误提示是因为在连接模拟器时,传入的超时时间参数类型不正确。在 Appium 中,连接模拟器时需要指定超时时间,如果传入的不是 int、float 或 None 类型的数据,就会出现这个错误。

解决方法如下:

  1. 检查传入的超时时间参数是否正确。确保传入的是 int、float 或 None 类型的数据。
  2. 如果传入的是字符串类型的数据,可以使用 int() 或 float() 函数将其转换为 int 或 float 类型。例如:
    timeout = "30"
    driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps, timeout=int(timeout))
  3. 如果传入的是变量或表达式,确保其返回值是 int、float 或 None 类型的数据。例如:
    timeout = 30
    driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps, timeout=timeout)
  4. 如果传入的是 None,可以省略 timeout 参数。例如:
    driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
    如果以上方法都无法解决问题,可以尝试更新 Appium 和相关的库,或者重新安装 Appium。
lanedm | 园豆:2396 (老鸟四级) | 2023-05-25 09:08
0

感谢网友的分享,已经成功了!
selenium版本降级
pip install --force-reinstall -v "selenium==4.8.0" 参考:
https://stackoverflow.com/questions/76209426/running-an-keyword-on-robotframework-throw-an-error-valueerror-timeout-value-c/76234505#76234505 – 来杯丞汁⁶
另一个参考链接:
https://github.com/appium/python-client/issues/863 – 来杯丞汁⁶

来杯丞汁⁶ | 园豆:204 (菜鸟二级) | 2023-05-26 10:24
0

这个错误提示表明在连接模拟器时,设置的超时值不正确,需要使用整数、浮点数或None作为超时值。

在你的代码中,desired_caps 参数中应该包含一个键为 'connectTimeout' 或 'timeout' 的项,并且该项的值应该是一个整数或浮点数。如果该项的值是一个对象(例如 <object object at 0x000001BF70FB47F0>),则会导致该错误。

请确保你的代码中已正确设置了连接超时值。例如,可以尝试将 desired_caps 修改为以下内容:

python
Copy code
desired_caps = {
'platformName': 'Android',
'deviceName': 'your_device_name',
'appPackage': 'your_app_package',
'appActivity': 'your_app_activity',
'connectTimeout': 10, # 设置为整数或浮点数,表示超时时间(以秒为单位)
# 其他的 desired capabilities...
}
在上述示例中,connectTimeout 设置为 10,你可以根据需要调整超时时间。

如果问题仍然存在,请确保你的 Appium 版本与你使用的 Appium Python 客户端库版本兼容。有时版本不匹配可能导致某些功能不正常或出现错误。

此外,确保你的环境配置正确,并且模拟器的连接设置正确。你可以尝试重新启动 Appium 服务器和模拟器,并检查是否仍然出现问题。

如果问题仍然持续存在,请提供更多关于你的环境配置、Appium 版本和完整的代码片段,这样可以更好地帮助你解决问题。

Technologyforgood | 园豆:7775 (大侠五级) | 2023-05-30 23:11
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册