1.Exception NoSuchElementException:
  解决方法:
  1)检查目标element的locator
  2)如果locator是正确的,尝试在查找element之前等待页面的加载
  3)如果等待了很久也一直没有找到element,尝试使用另外一个locator
2.Exception NoSuchWindowException
  解决方法:
  1)检查窗口的locator
  2)在找窗口之前,等到页面的加载
3.Exception NoAlertPresentException
  解决方法:
  1)确认alert(javascript 顶层的窗口,不是最新的)是当前的
  2)在操作alert之前等待页面的加载
4.Exception NoSuchFrameException
  解决方法:
  1)检查frame的locator
  2)检查这个frame是否有一些父frame(如果有父frame的话,应该先转换到父frame)
  3)在转换到目标frame之前,确认转换到了默认的content(仅有一个frame)
  4)在转换frame之前等待页面的加载
5.Exception UnhandledAlertException
  解决方法:
  1)Check if there is some alert dialog present. ( JavaScript pop window). And deal with them.
  2)If no javascript pop window present but the exception still occurs. Make sure the developer ols

  is closed when running automation case. (Because since selenium 2.19. “UnhandledAlertException”

  added and they think the developer tool is an alert)
6.Exception UnexpectedTagNameException
  解决方法:
  1)Check the target element’s html tag name.
  2)Try to wait for page load then initializing the selector.
7.Exception StaleElementReferenceException
  解决方法:
  1)Re-find the element again. (Because the element has been refresh.)
8.Exception TimeoutException
  解决方法:
  1)Check the expected conditions locator.
  2)Increase the wait time.

9.org.openqa.selenium.StaleElementReferenceException: Element not found in the cache - perhaps the page has changed since it was looked up

  因此可以看出,在经过一次点击后,原有PageLink已经失效。需要重新获取。
  其原因在于,点击过一次PageLink后,会重新刷新并生成新PageLink,当前页的PageLink不会显示。
  用Selenium <wbr>WebDriver获取WebElement时的元素过期问题
  因此解决方法是设定了两个参数
  private Integer currentPageLinkNumber = 1;
  private Integer MaxPage = 10;//Max page links number
  然后通过
while(currentPageLinkNumber<MaxPage)
{
WebElement PageLink;
PageLink = driver.findElement(By.xpath("//a[@class = 'PageLink' and @title ='"+Integer.toString(currentPageLinkNumber+1)+"']"));
PageLink.click();
currentPageLinkNumber++;
//OtherOperation();
}
  的方式进行迭代。
  虽然感觉很麻烦就是- -
  要很小心的注意同步currentPageLinkNumber和当前的PageLink
我用的另一种方法来解决过期的问题:
int i = 1;
int j = 0;
while(i!=0){
List<WebElement> links = driver.findElements(By.xpath("//a[@href]"));
WebElement link = links.get(j);
String httpurl = "http://";
String url = link.getAttribute("href");
String text = link.getText();
System.out.println(url+" "+text);
if(url.contains(httpurl)){
//如果是隐藏的属性的话,就会报错,明天看下如何去掉隐藏元素的干扰 //*[@id='page']/div[2]/div[2]/h1/a
if(driver.findElement(By.xpath("//a[@href]")).toString().equals("http://www.1905.com/")){
continue;
}
link.click();
navigate.back();
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
j++;
if(j>links.size()){
break;
}
}
}

WebDriver一些常见问题的解决方法的更多相关文章

  1. WebDriver一些常见问题的解决方法【转】

    转至:http://www.cnblogs.com/sylovezp/p/4329770.html 1.Exception NoSuchElementException: 解决方法: 1)检查目标el ...

  2. NHibernate常见问题及解决方法

    NHibernate常见问题及解决方法 曾经学过NHibernate的,但是自从工作到现在快一年了却从未用到过,近来要巩固一下却发现忘记了许多,一个"in expected: <end ...

  3. C#用ado.net访问EXCEL的常见问题及解决方法

    C#用ado.net访问EXCEL的常见问题及解决方法,除了像sql server,access常见的数据库,其实Excel文件也可以做为数据库访问. ado.net访问excel的实例: OleDb ...

  4. Nacos 常见问题及解决方法

    Nacos 开源至今已有一年,在这一年里,得到了很多用户的支持和反馈.在与社区的交流中,我们发现有一些问题出现的频率比较高,为了能够让用户更快的解决问题,我们总结了这篇常见问题及解决方法,这篇文章后续 ...

  5. 安装scrapy框架的常见问题及其解决方法

    下面小编讲一下自己在windows10安装及配置Scrapy中遇到的一些坑及其解决的方法,现在总结如下,希望对大家有所帮助. 常见问题一:pip版本需要升级 如果你的pip版本比较老,可能在安装的过程 ...

  6. AppFuse 3常见问题与解决方法

    非常长一段时间没做SSH项目了.近期抽出时间看了一下升级到3.x的appfuse,对新版本号使用过程中出现的一些问题进行了排查.汇总例如以下.以备后用.本文原文出处: http://blog.csdn ...

  7. python网络爬虫(1)——安装scrapy框架的常见问题及其解决方法

    Scrapy是为了爬取网站数据而编写的一款应用框架,出名,强大.所谓的框架其实就是一个集成了相应的功能且具有很强通用性的项目模板. 其实在Linux和 Mac安装,就简单的pip命令即可: pip i ...

  8. 浅谈Excel开发:九 Excel 开发中遇到的常见问题及解决方法

    Excel开发过程中有时候会遇到各种奇怪的问题,下面就列出一些本人在开发中遇到的一些比较典型的问题,并给出了解决方法,希望对大家有所帮助. 一 插件调试不了以及错误导致崩溃的问题 在开发机器上,有时可 ...

  9. 转:SVN常见问题与解决方法

    今天发现一个SVN很奇葩的问题.原来SVN提交的时候也是识别提交路径的大小写的... 发现网上有篇博客总结的挺好的.转载下来,转载出路:http://blog.csdn.net/shinn613/ar ...

随机推荐

  1. django template if return false

    如果if的参数不存在于context中就会返回false 参考:http://stackoverflow.com/questions/11107028/django-template-if-true- ...

  2. windows server r2 安装vs2017 更新补丁Windows8.1-KB2919355-x6

    方法一: 点击vs2017安装包后提示需要更新Windows8.1-KB2919355-x64补丁 点击链接进入全部下载后查看官方安装顺序为 注意 必须按照以下顺序安装更新:clearcompress ...

  3. .net core读取json格式的配置文件

    在.Net Framework中,配置文件一般采用的是XML格式的,.NET Framework提供了专门的ConfigurationManager来读取配置文件的内容,.net core中推荐使用j ...

  4. Nginx配置详细

    ######Nginx配置文件nginx.conf中文详解##### #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数. worker_ ...

  5. Kubernetes集群部署之一系统环境初始化

    安装版本: centos version: 7.4 docker version: 18.03.1-ce kubectl version: v1.10.1 etcdctl version: 3.2.1 ...

  6. Mac zsh切换bash bash切换zsh

    切换bash    ————>>>chsh -s /bin/bash 切换zsh      ------->>>chsh -s /bin/zsh

  7. tcp 三次握手 转

    转载 记得刚毕业找工作面试的时候,经常会被问到:你知道“3次握手,4次挥手”吗?这时候我会“胸有成竹”地“背诵”前期准备好的“答案”,第一次怎么怎么,第二次……答完就没有下文了,面试官貌似也没有深入下 ...

  8. 提升linux下TCP服务器并发连接数(limit)

    https://cloud.tencent.com/developer/article/1069900 1.修改用户进程可打开文件数限制   在Linux平台上,无论编写客户端程序还是服务端程序,在进 ...

  9. nginx-启动gzip、虚拟主机、请求转发、负载均衡

    一.启用gzip 1     gzip  on; 2     gzip_min_length 1k; 3     gzip_buffers 4 16k; 4     gzip_http_version ...

  10. DES ECB 模式 JAVA PHP C# 实现 加密 解密 兼容

    版本一: JAVA: import org.slf4j.Logger; import org.slf4j.LoggerFactory; import sun.misc.BASE64Decoder; i ...