返回self.find\u元素(按=按ID,value=id\)和pyhton appium中的异常错误

2024-09-27 21:34:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用python编写自动化测试。我使用的是android工作室模拟器和appium。我想为计算器写一个自动化程序,但某处出了一个错误。你知道吗

我补充道时间。睡眠()但问题仍然存在。你知道吗

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()

我正在等待android模拟器打开并计算。你知道吗

我有这样的错误行

> C:\python37\dersler1\venv\Scripts\python.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:\python37\dersler1\venv\lib\site-packages\selenium\webdriver\remote\webdriver.py",
> line 360, in find_element_by_id
>     return self.find_element(by=By.ID, value=id_)   File "C:\python37\dersler1\venv\lib\site-packages\selenium\webdriver\remote\webdriver.py",
> line 978, in find_element
>     'value': value})['value']   File "C:\python37\dersler1\venv\lib\site-packages\selenium\webdriver\remote\webdriver.py",
> line 321, in execute
>     self.error_handler.check_response(response)   File "C:\python37\dersler1\venv\lib\site-packages\appium\webdriver\errorhandler.py",
> line 29, in check_response
>     raise wde   File "C:\python37\dersler1\venv\lib\site-packages\appium\webdriver\errorhandler.py",
> line 24, in check_response
>     super(MobileErrorHandler, self).check_response(response)   File "C:\python37\dersler1\venv\lib\site-packages\selenium\webdriver\remote\errorhandler.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

Tags: inpyidbyvenvresponsedriverline
2条回答

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

我以前也遇到过同样的问题。如我所见,您在脚本中的任何地方都没有使用css\u选择器,但它仍然显示css\u选择器的错误。当你签入你的Appium logs时,你会对它有更多的了解。你知道吗

对我来说,当我将Appium Python客户端更新到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

Some ids are working, others are not. I used xpath instead of id and the error improved. I think the number of ids is constantly changing. Xpath helped.

相关问题 更多 >

    热门问题