美文网首页
【基础】错题集1_Python3_网页自动化1

【基础】错题集1_Python3_网页自动化1

作者: Alyna_C | 来源:发表于2021-03-01 07:00 被阅读0次

    1.Python:vscode编写python时提示Python(unresolved-import)

    在引用自定义模块时,在代码无错的情况下,vscode提示Python(unresolved-import)

    可在vscode的setting.json中添加"python.analysis.disabled":["unresolved-import"]

    以消除该warning

    2.Parsing Error xml.parsers.expat.ExpatError: not well-formed (invalid token): line X column Y

    报这个错误主要还是“转码”的问题,如果xml文件中没有中文,自然能够输入所需要的数据,但是现在xml文件中有中文。一般习惯用txt来编辑xml文件进行数据保存,但是在用txt编辑完xml文件后,直接保存,默认保存的编码方式是ANSI。

    问题就出在编码方式,如果我们用UTF-8的编码方式保存后,重新执行脚本,那么程序执行成功。

    解决办法:

    把文件用编辑器打开,复制剪贴到http://web.chacuo.net/formatxml格式化之后,把格式化之后的内容复制出来,粘贴保存就可以了。

    3.Python+selenium验证部分文本框内容相符即断言成功

    分析:只获取部分文本信息“您已登录成功!”即可断言系统登录成功

    登录信息是PI地址和时间,是变量,比较复杂

    解决办法:

    message=driver.find_element_by_id(‘idvalue’).text

    if

    message.startswith(您已经登录系统!): print(“登录成功”)

    else:

    print(“登录失败”)

    同理,在编写自动化测试的时候也可类似使用

    assertEqual(message.startswith(“您已经登录系统!”),True)

    4.Python3+selenium报错处理:

    “selenium.common.exceptions.NoAlertPresentException:

    Message: No alert is active”

    对于弹框各种资料都说通过switch_to.alert属性获取对话框对象,然后使用该对象的accept()方法点击确认。

    但使用该方法,一直报错:“selenium.common.exceptions.NoAlertPresentException:

    Message: No alert is active”

    解决办法:

    使用switch_to.active_element确认按钮然后点击

    element= browser.switch_to_active_element().click()

    5.selenium中sendkeys()方法输入中文报错之解决方案

    python的编码为utf8,直接打印中文都是正常的,但是在使用selenium的方法sendkeys()发送中文时,会报错提示UnicodeDecodeError:‘utf8’codec can’t decode byte0xe6 in position 0: unexpected end of data

    解决办法:

    sendkeys()发送中文时需要明确指出其编码:

    方式1,在中文前加入u

    driver.find_element_by_class_name(“s_ipt”).send_keys(u’测试’)

    方式2,使用decode()方法

    driver.find_element_by_class_name(“s_ipt”).send_keys(str.decode(‘utf-8’))

    6.使用HTMLTestRunner生成的html文件名添加不进去时间戳

    now = time.strftime("%Y-%m-%d %H:%M:%S")

    filename = 'D:\\python\\test_163email\\test_case\\report\\'+now+' delete_result.html'

    文件名不能带符号‘:’,因此使用time.strftime()时,其内不能使用‘%H:%M:%S’这种形式

    解决办法:

    now = time.strftime("%Y-%m-%d %H_%M_%S")

    相关文章

      网友评论

          本文标题:【基础】错题集1_Python3_网页自动化1

          本文链接:https://www.haomeiwen.com/subject/wffetltx.html