Appium find_element_by_name (u'中文报错'),使用 # -*- coding: UTF-8 -*-无法解决

wagnxinghao · 2017年04月07日 · 最后由 stack 回复于 2017年04月10日 · 2618 次阅读

python2.7 ,apium1.4.13
使用 find_element_by_name(),里面输入中文后,执行报错,中文无法识别,网上方法输入:

-- coding: utf-8 --

-- coding: UTF-8 --

import sys
reload(sys)
sys.setdefaultencoding('utf8')

或者 find_element_by_name(u'中文') ,中文前面加 u 也无法解决;请问还有什么办法没?

共收到 6 条回复 时间 点赞

报错感觉不太像是编码问题

—— 来自 TesterHome 官方 安卓客户端

无忧~ 回复

看着像是什么,愿闻其详

看看 IDE 的编码?

Zhhh 回复

你好编码如下:

-- coding: utf-8 --

-- coding: UTF-8 --

import unittest
import time
import HTMLTestRunner
from appium import webdriver
import sys
reload(sys)
sys.setdefaultencoding('utf8')

index = 1

class mime_test(unittest.TestCase):
def setUp(self):
desired_caps = {
'app': 'com.herconnect',
'udid': '9cb9d70a66ada0e628b15242ac7abc2feecf8213',
'platformName': 'iOS',
'platformVersion': '9.3',
'deviceName': '0',
'unicodeKeyboard': True,
'resetKeyboard': True
}
self.driver = webdriver.Remote('http://19:4723/wd/hub', desired_caps)

def tearDown(self):
self.driver.quit()

#
def test_8_QQ_wechat(self):
self.driver.find_element_by_name(u'下次再说').click()
print(u'下次再说')
time.sleep(3)

if name=='main':
suit = unittest.TestSuite()
suit.addTest(mime_test('test_8_QQ_wechat'))
# suit.addTest(unittest.makeSuite(mime_test))
timestr = time.strftime('%Y%m%d%H%M', time.localtime(time.time()))
filename = '/Users/huanshi/Desktop/img/' + timestr + '.html'
fp = open(filename,"wb")
html_runner = HTMLTestRunner.HTMLTestRunner(stream= fp , title= u'测试报告' , description= u'执行结果')
html_runner.run(suit)

wagnxinghao 回复

😂 我想说的是 例如 pycharm 的 file encodings 选项是不是设置成 utf-8 。 还有 HTMLTestRunner 貌似要改动一下才能显示中文 可以查查百度。 直接执行脚本看看 IDE 里打印了啥 自己做个 print 看看 或者看看 appium 客户端里的 log 有啥信息 ,感觉不是编码的问题。下面报错 undefined status object 可以搜索一下

搜索了关于undefined status object错误的网页,在 testerhome 上有一个类似的内容:
https://testerhome.com/topics/4460
并且已经得到解决:

** 解决方法 **:
像 click,sendkeys 这些方法 在测试 ios 时都会报这个错,使用 IOSElement 的就没有问题,比如使用 tap 而不是 click,使用 setValue 而不是 sendKeys

看是否对你有帮助?

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册