1、首先,在selenium-webdriver中我们用两种方式进行等待:明确的等待和隐性的等待。明确的等待是指在代码进行下一步操作之前等待某一个条件的发生。最不好的情况是使用Thread.sleep()去设置一段确认的时间去等待。
2、然后,当上传完成后,下面总大小的元素就会隐藏,当元素隐藏后,再判断上面进度,当文件上传时,显示进度条,进度到99%时,显示"处理中",上传成功后,显示"完成"。
3、然后,使用WebDriver点击界面上被隐藏的元素时,使用默认的IWebElement.Click()方法可能无法触发Click事件,这时的修改方案可以采用执行JS的方式来实现。页面跳转获取新页面的元素需要时间,所以需要在跳转后增加等待时间,最通用的方法是判断在某个时间内元素是否加载完成。
4、然后,如果网站使用了JQuery的动画效果,我们在运行测试的时候可以disable JQuery的animation。有的网站首次访问时会弹出广,第二次访问则不再显示,这种情况可以自己调用WebDriver的IsElementPresent(Byby)方法进行判断。
5、然后,自动化测试中,许多地方要求登录,cookie能够实现不必每次输入用户名和辩尢霆靡密码进行登录。带placeholder属性的输入框Clear无效叵萤茆暴(invalid element state),自动测试时,会出现某些带有默认值的输入框Clear()方法报错,错误提示:invalid element state: Element is not currently interactable and may not be manipulated,此时需要检查下输入文本框是否带有placeholder属性,如果有则直接略过Clear方法。
6、最后,如果一个页面是一个html元玟姑岭箫素,只有一个head,一个body,使用driver.FindElement()可以查找页面中任淡馋衔锂何一个元素。但是,页面中如果嵌入<frame…../>是的页面包含多个html元素,这种情况下就先要定位到元素所在的frame,然后再查找对应的元素。WebDriver每次启动一个Firefox的实例时,会生成一个匿名的profile,并不会使用当前Firefox的profile。所以如果要访问需要通过代*理的web服务,直接设置Firefox的代*理是没用的,因为WebDriver启动的Firefox不会使用该profile,需要在代码里设置FirefoxProfile属性,或者直接调用默认的profile。