寻求疑惑解答:
最近脚本开始做兼容性测试方面
在 chrome 和 firefox 的最新的几个版本中都没什么问题;
但是在使用 IE 11 时,向页面填充用户名和密码的动作时使用 sendkeys
函数,结果是一个字符一个字符的填充,简单的登陆操作,用了接近一分钟
我不明白为什么?
虽然说 sendkeys 的底层好像确实是这样实现的(记不清楚了),但是在 IE 中脚本以这行方式运行的话也太慢了!
求朋友们的指点。
可惜 testerhome 不能上传视频,否则我就录制一小段传上来了。
后面的是老窗口
前面的是新窗口
从老窗口开出新窗口,居然登陆状态已经不在了。。。。
mark 一下
你的问题不要发布这么密集,为了不干扰大家,请发布到问答区
是 webdriver 么。。。我也发现了,32 位驱动在 64 位系统上执行就速度正常,但是 64 位去执行就贼慢,你可以换个 32 位的驱动试下。
哥们儿,你切换 driver 后,重新安装了 IE 浏览器为 32 吗?
我发现使用 32 位的驱动能够驱动 64 位的浏览器,但是很容易崩溃!
没碰到这种情况。。。我以前使用 ie11 只是打开链接做个登录而已,可以看下这篇文章里面有没有你要的
在 IE 中运行 SELENIUM WEBDRIVER 脚本
我下午装个 win10 试下
我回来打救你了!写了个 ie11 的百度查询脚本,多点几个控件后果然崩溃了。在 Stack Overflow 上面找到了解决方案,亲试可以,用的是 64 位的处理方案,方法如下,但就是不知道为什么。
32 位 Windows,在注册表编辑器中检查的密钥是 HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Internet Explorer \ Main \ FeatureControl \ FEATURE_BFCACHE。
64 位 Windows,密钥是 HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ Internet Explorer \ Main \ FeatureControl \ FEATURE_BFCACHE。
FEATURE_BFCACHE 子项可能存在也可能不存在,如果不存在则需要创建。然后在此项内部,创建一个名为 iexplore.exe 的值为 0 的 DWORD 值
感觉等我做完这个项目以后就能出一个 selenium 和 appium 疑难杂症集锦啦
哈哈哈哈
目前稳定下来了
运行还可以
不过遇到了新的问题:
在发布一个动态的时候,会打开一个新的窗口
这种行为在 chrome,firefox 和 IE 中是一样的
不过在 chrome 和 firefox 中是统一在一个大的 window 窗口中显示
而在 IE 中是一个独立的窗口,当然显示的形式无所谓
只是有一个致命的问题:
在 IE 中,切换到新的窗口后,需要我重新登录
即已经建立的 session 和获取的 cookies 都没了,我仅仅是使用 driver.close()
函数关闭了老的窗口,据我所知,driver.quit() 函数才会真的关闭浏览器删除 cookies
再说明一下我所有的脚本在 chrome 和 firefox 中都是正常运行的,包括切换窗口,关闭老的窗口等等
唯有到了 IE,是的在脚本运行时,账号莫名其妙的被弹出了,我目前基本确定,就是切换窗口一起的
虽然不是每次切换窗口都会出现
可以参考一下我最新上传的图片
其实我只是想吐槽一下 IE,真是一步一个坑啊
原因已经找到了
是因为我多次强行终止测试脚本的运行
结果任务管理中可以看到有很多个 IEDriverServer 在运行
应该是他们之间发生了串位
我重启了电脑以后这个问题就不存在了
哥们,遇到过这种问题没?
在 IE 中,脚本失败的时候,我会对页面进行截图保存操作
public String takeScreenShot(WebDriver driver, String method){
if (driver == null) {
return null;
}
String imageName = NameUtil.getImageName(method);
String path = getImagePath(imageName);
File srcFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
try {
FileUtils.copyFile(srcFile, new File(path));
LogUtil.frameLog("Screen shot be taken: " + path);
} catch (IOException e) {
LogUtil.error("Screen shot error: " + path);
}
return imageName;
}
函数如上:
现在我发现一个问题,只要有脚本失败,就会产生一个错误:
[FRAME] Delete Cookies and Quit
java.lang.IllegalArgumentException: Last unit does not have enough valid bits
at java.util.Base64$Decoder.decode0(Base64.java:734)
at java.util.Base64$Decoder.decode(Base64.java:526)
at java.util.Base64$Decoder.decode(Base64.java:549)
at org.openqa.selenium.OutputType$2.convertFromBase64Png(OutputType.java:55)
at org.openqa.selenium.OutputType$2.convertFromBase64Png(OutputType.java:53)
at org.openqa.selenium.OutputType$3.convertFromBase64Png(OutputType.java:73)
at org.openqa.selenium.OutputType$3.convertFromBase64Png(OutputType.java:71)
at org.openqa.selenium.ie.InternetExplorerDriver.getScreenshotAs(InternetExplorerDriver.java:238)
at com.eisoo.content.report.ScreenShot.takeScreenShot(ScreenShot.java:30)
这个在 firefox 和 chrome 中也是没有遇到过。。。。
我是 ruby watir 党= =,这个报错看得我一头雾水。