在 Python appium 中返回self.find_element(通过 = By.ID,值 = id_)和异常错



我想用python编写自动化测试。我正在使用安卓工作室模拟器和应用程序。我想为计算器编写自动化,但某处出现了错误。

我添加了time.sleep(),但问题仍然存在。

from appium import webdriver
import time
caps = {"deviceName": "emulator-5554", "platformName": "android", "appPackage": "com.android.calculator2",
"appActivity": ".Calculator", "noReset": True}
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", caps)
el2 = driver.find_element_by_id("com.android.calculator2:id/digit_8")
el2.click()
time.sleep(2)
el3 = driver.find_element_by_accessibility_id("times")
el3.click()
time.sleep(2)
el4 = driver.find_element_by_id("com.android.calculator2:id/digit_3")
el4.click()
time.sleep(2)
el5 = driver.find_element_by_accessibility_id("equals")
el5.click()
time.sleep(2)
el6 = driver.find_element_by_id("com.android.calculator2:id/formula")
el6.click()
time.sleep(2)
driver.quit()

我正在等待安卓模拟器打开并计算。

我有这个错误线;

> C:python37dersler1venvScriptspython.exe
> C:/python37/dersler1/hs.py Traceback (most recent call last):   File
> "C:/python37/dersler1/hs.py", line 12, in <module>
>     el2 = driver.find_element_by_id("com.android.calculator2:id/digit_8")   File
> "C:python37dersler1venvlibsite-packagesseleniumwebdriverremotewebdriver.py",
> line 360, in find_element_by_id
>     return self.find_element(by=By.ID, value=id_)   File "C:python37dersler1venvlibsite-packagesseleniumwebdriverremotewebdriver.py",
> line 978, in find_element
>     'value': value})['value']   File "C:python37dersler1venvlibsite-packagesseleniumwebdriverremotewebdriver.py",
> line 321, in execute
>     self.error_handler.check_response(response)   File "C:python37dersler1venvlibsite-packagesappiumwebdrivererrorhandler.py",
> line 29, in check_response
>     raise wde   File "C:python37dersler1venvlibsite-packagesappiumwebdrivererrorhandler.py",
> line 24, in check_response
>     super(MobileErrorHandler, self).check_response(response)   File "C:python37dersler1venvlibsite-packagesseleniumwebdriverremoteerrorhandler.py",
> line 242, in check_response
>     raise exception_class(message, screen, stacktrace) selenium.common.exceptions.InvalidSelectorException: Message: Locator
> Strategy 'css selector' is not supported for this session

@adem 我认为您的Appium-Python-Client版本已经过时,与您当前的Appium server版本不兼容。 使用命令更新您的Appium-Python-Clientsudo pip install Appium-Python-Client==0.34

我有时也遇到过同样的问题。如我所见,您没有在脚本中的任何位置使用css_selector,但它仍然显示css_selector错误。当您签到Appium logs时,您会对此有更多的了解。

对我来说,当我将我的Appium-Python-Client版本更新到0.34时,它解决了

import os
from appium import webdriver
import time
PATH = lambda p: os.path.abspath(
os.path.join(os.path.dirname(__file__), p))
desired_caps = {
"deviceName": "emulator-5554",
"platformName": "android",
"appPackage": "com.android.calculator2",
"appActivity": ".Calculator",
"noReset": True
}
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)
while True:
try:
el1 = driver.find_element_by_xpath('/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.support.v4.view.ViewPager/android.widget.LinearLayout/android.view.ViewGroup[1]/android.widget.Button[6]')
el1.click()
time.sleep(1)
el2 = driver.find_element_by_accessibility_id("times")
el2.click()
time.sleep(1)
el3 = driver.find_element_by_xpath( 
'/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.support.v4.view.ViewPager/android.widget.LinearLayout/android.view.ViewGroup[1]/android.widget.Button[9]')
el3.click()
time.sleep(1)
el4 = driver.find_element_by_accessibility_id("equals")
el4.click()
time.sleep(1)
except ValueError:
print(" ERROR BRO  ")
pass
break

有些 id 有效,有些则无效。我用 xpath 代替了 id 和 错误已改善。我认为 id 的数量在不断变化。 Xpath帮了忙。

最新更新