python定位手机元素_如何使用Appium和Python定位元素?

这篇博客讲述了作者在尝试使用Appium进行Android应用自动化测试时遇到的问题。他们正在测试一个计算器应用,目标是找到并点击数字'7'的按钮,但遇到了无法定位元素的错误。代码中显示了使用的名字定位方法失败,并附有详细的错误报告。
摘要由CSDN通过智能技术生成

在Android设备上测试一个简单的计算器应用程序。

尝试了许多方法来定位元素,但都失败了。

我可以从UI自动机查看器获得的信息是类名、按钮名和坐标。我只想找到按钮“7”并按下它。

代码:import unittest, time, os

from appium import webdriver

from time import sleep

class Android_Maaii(unittest.TestCase):

"Class to run tests against the ATP WTA app"

def setUp(self):

"Setup for the test"

PATH = lambda p: os.path.abspath(os.path.join(os.path.dirname(__file__), p))

desired_caps = {}

desired_caps['platformName'] = 'Android'

desired_caps['platformVersion'] = '4.2.2'

desired_caps['deviceName'] = 'Galaxy S4'

desired_caps['app'] = PATH('C:\Python34\MyCalculator.apk')

# Since the app is already installed launching it using package and activity name

desired_caps['appPackage'] = 'com.example.mythirdapp'

desired_caps['appActivity'] = '.MainActivity'

# Adding appWait Activity since the activity name changes as the focus shifts to the ATP WTA app's first page

desired_caps['appWaitActivity'] = 'com.example.mythirdapp.MainActivity'

self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

def tearDown(self):

"Tear down the test"

self.driver.quit()

def test_maaii(self):

#"Testing the ATP WTA app "

self.driver.implicitly_wait(30)

time.sleep(5)

print ("Slept for 5 sec...")

element = self.driver.find_element_by_name('7')

#---START OF SCRIPT

if __name__ == '__main__':

suite = unittest.TestLoader().loadTestsFromTestCase(Android_Maaii)

unittest.TextTestRunner(verbosity=2).run(suite)

错误报告:ERROR: test_maaii (__main__.Android_Maaii)

----------------------------------------------------------------------

Traceback (most recent call last):

File "C:\Python34\testfiles\MaaiiTest_new.py", line 59, in test_maaii

element = self.driver.find_element_by_name('7')

File "C:\Python34\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 302, in find_element_by_name

return self.find_element(by=By.NAME, value=name)

File "C:\Python34\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 662, in find_element

{'using': by, 'value': value})['value']

File "C:\Python34\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 173, in execute

self.error_handler.check_response(response)

File "C:\Python34\lib\site-packages\appium\webdriver\errorhandler.py", line 29, in check_response

raise wde

File "C:\Python34\lib\site-packages\appium\webdriver\errorhandler.py", line 24, in check_response

super(MobileErrorHandler, self).check_response(response)

File "C:\Python34\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 166, in check_response

raise exception_class(message, screen, stacktrace)

selenium.common.exceptions.WebDriverException: Message: 'An unknown server-side error occurred while processing the command.'

======================================================================

ERROR: test_maaii (__main__.Android_Maaii)

----------------------------------------------------------------------

Traceback (most recent call last):

File "C:\Python34\testfiles\MaaiiTest_new.py", line 31, in tearDown

self.driver.quit()

File "C:\Python34\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 455, in quit

self.execute(Command.QUIT)

File "C:\Python34\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 173, in execute

self.error_handler.check_response(response)

File "C:\Python34\lib\site-packages\appium\webdriver\errorhandler.py", line 24, in check_response

super(MobileErrorHandler, self).check_response(response)

File "C:\Python34\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 138, in check_response

if 'message' in value:

TypeError: Type str doesn't support the buffer API

----------------------------------------------------------------------

Ran 1 test in 47.363s

FAILED (errors=2)

真正的问题是什么?我尝试了所有的locate元素方法,但都失败了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值