由于框架迁移而发生老的系统需要运行在新的浏览器做自动化测试,并需要保持正常,面对新版浏览器,处理csv命令java脚本也需要做相应的调整……
如下一些错误发生自测试中,并得到纠正
1. 由于FFv63切换页面运行速度过快
当 WebDriverWait 无法处理等待时间时, 我们需要考虑另一个简单直接的方法等待页面的刷新, 但这种方法不是最好的,只会作为能否等待的操作.
try { Thread.sleep(seconds); } catch( Exception e) { e.printStackTrace(); }
把这段凑得放在页面刷新或者Post的之前或之后的动作,这样需要停几秒钟,一般这种情况经常发生在click 和 type 命令.
2. 元素不能点击,提示:Element is not clickable…
因为元素的位置不能合适的显示正常的位置,而click action由于被其他元素挡住,所以不可用,因为我们需要调整元素的位置
:
WebDriver driver=...; WebElement element=...; JavascriptExecutor executor = (JavascriptExecutor) driver; int eleY = element.getLocation().y +/- offset; //down or up int eleX = element.getLocation().x +/- offset; //right or left executor.executeScript("window.scrollTo(" + eleX + "," + eleY + ")"); //get element focus and enable click, some cases can skip it element.sendKeys(""); element.click();
移动到相应的位置并且点击
另一个原因是因为anchor的link像<a href…> 在FFv63 也不能被点击的情况
因此solution code 如下
JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript("arguments[0].innerHTML=arguments[1]", element, "sometext"); //change to text, so can click element.click();
替换anchor inner html text, 就可以clickable了.
3. 不能滑动view issue:Can not scroll to the view issue
一般发生在拥有长item的select标签,当点击select时it item在屏幕中看不到只能手动scroll to 出来,
但是目前方法不能支持这个操作,但有以下solution
JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript("window.scrollBy(0,+/- offset)", ""); // +/-:means scroll down or up to the page new Actions(driver).moveToElement(element).perform(); //use Actions to scroll to element element.click();
If select position is not good, we need to adjust first using above position solution.
如果select位置不好,首先需要重新调整,方法如上
4.Checkbox 不能被checked issue
这里我们需要用到js:
js.executeScript("document.getElementById('" + element.getAttribute("id")+ "').setAttribute('checked','checked');");
这些解决方法code最好放置在catch块中,避免影响其他case的运行,
还有多数issues,我们仍需要debug或手动操作追踪页面element