目录
1.登录断言:
1.URL:
URL包含XXX;
因为IP和域名都可能会变化,所以这部分是不稳定的,不能放在断言里面
路径比较稳定,所以用
2.登录进来的用户名
页面右上角包含用户名;(包含判断,因为中英文下都可以用)
遇到的问题:
1.用例不执行------suit=unittest.defaultTestLoader.discover(start_dir=path) print(path)--默认查找的是文件名格式为pattern='test*.py' :表示用例文件名的匹配原则。星号“*”表示任意多个字符。(test*.py是以test开头),如果格式不对就会不执行该下的用例。
2.定位不到用户名元素------登录界面有iframe,需要切换iframe
3.登陆后URL获取的登录前的-----跳转有延时,需要加延时
4.Jason文件数据读取到其他文件参数了-----路径如果未指定,需要和测试文件在一个目录下,需要注意文件路径的指定。
5.封装switch_to.frame遇到的问题,明明用的Xpath,为什么提示ID不对:
跟踪定位self.find_element发现方法里面返回的是数组,没有用到index.
修改如下,才执行通过。
6.封装 等待新的URL报错:
原因:获取当前URL的driver.current_ur后面不需要()
2.浏览器设置-免登录
selenium打开,每次都是全新的浏览器,等于重装系统后第一次打开浏览器的状态(某些软件的设置就会恢复默认,有的还弹出欢迎界面)。可以设置系统级级用户打开,不是每次都是全新用户。
session和local story都在profile文件里面 ,可以打开一个默认的profile
可以实现免登录,以及所有配置都是之前配好的状态。不会没次都是全新的身份去打开浏览器。
PS:每次用selenium打开浏览器新建profile,C盘就会占用越来越多。所以可以把友好的配置先配置好。
3.复用性代码重构:
import xtext
from xtext import file_data,date_class
from xtext import case
from xtext.config import XTest
class emial163_Test(xtext.TestCase):
@file_data("data.json",2)
def test_email_login_scccess(self,username,password):
self.open("https://mail.163.com/")
self.switch_iframe(xpath="//*[@id=\"loginDiv\"]/iframe")
self.send_text(text=username ,xpath="//*[@data-loginname=\"loginEmail\"]")
self.send_text(text=password ,xpath="//*[@name=\"password\"]")
self.click(xpath="//*[@id=\"dologin\"]")
self.wait_new_u