总结:
1 .注意Thread.sleep ()的应用,这里我们用到两次,第一次在我们首页点击登录后会弹出一个登录框,这个步骤其实需要一定时间进行加载,所以我们在其点击之后执行下一步操作前应该休眠几秒,否则会报错:
no such element: Unable to locate element: {"method" :"name" ,"selector" :"email" }
另一个Thread.sleep ()是在我们点击登录框中的"登录按钮" 之后因为要加载我们的用户信息,同样需要应用休眠,凡是需要加载信息的都可以考虑进行休眠
2 .执行上述代码其实多次报诸如:no element或者Unable to locate element归根结底还是我们找寻元素犯了一些常见的错误:
3 . id,className,name等元素看错或者混淆,比如一个"登录" 按钮,本来它的元素类型是id,但是我们却通过"By.className" 或者By.name来查找它
4 . 关于id,className,name的属性值我们一定要到对应的网站上进行查看并且复制,不要嫌麻烦,比如我们的"登录" 按钮是"btn_red" ,如果你自己输入的话看起来和人家网站上的一样,然而实践亲测往往自己输入的执行自动化的时候还是定位到我们没有找到这个元素,所以最好是粘贴人家官方的,避免不必要的错误
5 .从一个页面跳转到另一个页面时,如果网络状态不太好,
建议这个过程之间添加一个Thread.sleep ()时间来缓冲
,比如我的代码从登录后跳转到商品详情页面,
虽然我依赖了登录,但实际并没有出现登录成功效果
,这就是网络不好的延迟效果,加个Thread.sleep 就好
,另外Thread.sleep 还适用于找不到元素的情况
,这也是网络不好的原因,如上述的第二个Thread.sleep
,常见于点击控件跳转到另一个页面的情况,比如常见的"登录" ,“提交”等
6 .unit.framework.ComparisonFailure:导包出错,
Assert断言时系统自动导包,正确的是:
"import org.testng.Assert;"
错误的是:"import junit.framework.Assert"
7 .之前报错no element locate,原因,util中的GetLocator类中未添加tagName,linkText的查找方法,而我们找寻元素是却用到了