范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

你需要知道的有关Selenium异常处理的都在这儿

  什么是异常?
  顾名思义,作为程序员的一种常用术语,"异常"与任何特定的编程语言无关。它属于程序因为突然中止,而未能交付出预期输出的事件。通常,引发异常出现的潜在因素往往来自如下方面:
  · Java虚拟内存(JVM)的不足
  · 请求访问的文件在目标系统中不存在
  · 用户提供了无效的数据
  · 在正常的通信过程中突然出现断网
   Java中的异常类型
  1. 已查明的异常(Checked Exceptions):编译器在编译的过程中,会检查到这些异常,并验证它们是否已被处理。如果未被处理,系统会报告编译错误。因此它们被通称为编译时异常(compile-time exceptions)。下面是一些常见的此类异常示例:
  · SQLException:程序在基于 SQL 语法执行 数据库 查询时,可能会产生此类异常。
  · IOException:程序在文件上执行无效的I/O流操作时,可能会产生此类异常。
  · ClassNotFoundException:当JVM无法找到所需的Java类时,可能会产生此类异常。
  2. 未查明的异常(Unchecked Exceptions):这些异常是在程序的执行期间发生的逻辑错误,因此通常称为运行时异常(Runtime Exceptions)。此类异常在编译时未被检查出来,或者在整个编译过程中已被忽略。下面是一些典型的此类异常示例:
  · NullPointerException:当访问具有空值的对象时,可能会产生此类异常。
  · ArrayIndexOutofBound:当使用无效的索引值去访问数组时,可能会产生此类异常。
  · IllegalArgumentException:当程序将不正确的参数传递给方法时,可能会产生此类异常。
  · NumberFormatException:当程序将字符串传递给无法转换为数字的方法时,可能会产生此类异常。
  · ArithmeticException:当程序执行不正确的算术运算(例如将数字除以零)时,可能会产生此类异常。
   异常处理标准
  通过对异常处理能力的提升,我们不仅可以保持代码的整洁,而且能够增强其可维护性、可扩展性和可阅读性。当然,不同的面向对象编程(Object-Oriented Programming,OOP)语言,具有不同的异常处理方法。以下是一些常用的Java异常处理标准:
  Try-Catch:该关键字组合可被用于捕获异常。其中,try块应当被放在开头,而catch块应被放在try块的末尾,以便捕获异常,并采取必要的行动。也就是说,我们可以在遇到异常时,创建异常类的对象,以便使用以下预定义的方法,来显示调试信息:
  · printStackTrace():该函数可用于打印栈的跟踪、异常的名称、以及其他重要的异常信息。
  · getMessage():此函数有助于获取针对异常的深入描述。
  try
  {
  // Code
  } catch(Exception e){
  // Code for Handling exception
  }
  同时,Try-Catch块也可以用其他高级方法来处理异常,例如,我们可能希望从单个代码块中捕获多个异常,那么就可以通过在try块之后的多个catch块,去处理不同的异常。而且,我们在try块之后,使用无限数量的catch块。
  try
  {
  //Code
  } catch(ExceptionType1 e1){
  //Code for Handling Exception 1
  } catch(ExceptionType2 e2){
  //Code for Handling Exception 2
  }
  Throw/Throws:如果程序员想显式地抛出异常,那么可以使用throw关键字,与要在运行时处理的异常对象协同使用。
  public static void exceptionProgram()throws Exception{
  try {
  // write your code here
  } Catch(Exception b){
  // Throw an Exception explicitly
  throw(b); }
  }
  如果开发者想抛出多个异常,则可以通过在方法签名的子句中使用throws关键字来抛出,并且由方法的调用者去进行异常处理。
  public static void exceptionProgram()throws ExceptionType1, ExceptionType2{
  try {
  // write your code here
  } catch(ExceptionType1 e1){
  // Code to handle exception 1
  } catch(ExceptionType1 e2){
  // Code to handle exception 2
  }
  finally:该个代码块往往是在try-catch块之后被创建的。也就是说,无论是否抛出异常,它都会被执行。
  try {
  //Code
  } catch(ExceptionType1 e1){
  //Catch block
  } catch(ExceptionType2 e2){
  //Catch block
  } finally {
  //The finally block always executes.
  }
  Selenium中的常见异常
  WebDriverException定义了Selenium中的多种异常,我们从中选取最常见的异常予以介绍,并配上简单的针对Selenium的异常处理方案:
    1. NoSuchElementException
  当WebDriver无法定位所需要元素时,Selenium可能会产生此类异常。此处的NoSuchElementException是NotFoundException类的子类,它通常出现在程序使用了无效的定位器时。
  此外,如果WebDriver仍然停留在上一页、或正在加载下一页,而所需的定位器已到达了下一页时,就会因为该延迟而出现异常。为此,我们应当通过适当的等待处理 测试 ,最大限度地减少此类异常的发生。
  当然,此类异常可以在catch块中被捕获到,并且可以在其中执行所需的操作,以继续完成自动化的测试。例如:
  try { driver.findElement(By.id("form-save")).click(); } catch(NoSuchElementException e){
  System.out.println("WebDriver couldn’t locate the element"); }
    2. NoSuchWindowException
  该异常也是NotFoundException类的子类。如果WebDriver尝试着切换到无效的 浏览器 窗口,那么WebDriver将抛出NoSuchWindowException。因此,要实现窗口切换的好方法是,首先获取活动窗口的会话,然后在对应的窗口上执行所需的操作。例如:
  for(String windowHandle : driver.getWindowHandles()){
  try { driver.switchTo().window(handle); } catch(NoSuchWindowException e){ System.out.println("Exception while switching browser window"); }
  }
  3. NoAlertPresentException
  当WebDriver尝试着切换到某个不存在或无效的警报时,Selenium可能会产生此类异常。对此,我建议开发者使用显式、或适当的等待时间,来处理浏览器的各类警报。倘若仍然等不到警报的话,catch块可以捕获该异常。例如:
  try {
  driver.switchTo().alert().accept(); } catch(NoSuchAlertException e){
  System.out.println("WebDriver couldn’t locate the Alert"); }
    4. ElementNotVisibleException
  该异常被定义为ElementNotInteractableException类的子类。当WebDriver尝试着对不可见的元素、或不可交互的元素执行各项操作时,Selenium可能会产生此类异常。对此,我建议开发者在的确需要之处,让Selenium进行适当的超时等待。例如:
  try { driver.findElement(By.id("form-save")).click(); } catch(ElementNotVisibleException e){
  System.out.println("WebDriver couldn’t locate the element"); }
  5. ElementNotSelectableException
  该异常属于InvalidElementStateException类的子类。在Selenium中,ElementNotSelectableException表明某个元素虽然存在于网页上,但是无法被WebDriver所选择。
  catch块不但可以处理Selenium中的此类异常,而且可以使用相同或不同的 技术 ,重新选择相同的元素。例如:
  try {
  Select dropdown = new Select(driver.findElement(By.id("swift"))); } catch(ElementNotSelectableException e){
  System.out.println("Element could not be selected")}
   6. NoSuchSessionException
  Selenium通过driver.quit()命令退出自动化的浏览器会话后,以及在调用某个测试方法时,会产生此类异常。当然,如果浏览器崩溃或出现断网,该异常也可能会发生。为了避免出现NoSuchSessionException,我们可以在测试套件结束时,退出浏览器,并确保用于 自动化测试 的浏览器版本的稳定性。例如:
  private WebDriver driver;
  @BeforeSuite
  public void setUp(){ driver = new ChromeDriver(); }
  @AfterSuite
  public void tearDown(){ driver.quit(); }
    7. StaleElementReferenceException
  当DOM中不再存在程序所需的元素时,Selenium将抛出StaleElementReferenceException。当然,如果DOM未能被正确加载、或WebDriver被卡在错误的页面上时,也可能会产生这种异常。对此,您可以使用catch块捕获该异常,并且使用动态的XPath、或尝试着重新刷新页面。例如:
  try { driver.findElement(By.xpath("//*[contains(@id,firstname’)]")).sendKeys("Aaron");
  } catch(StaleElementReferenceException e){
  System.out.println("Could not interact with a desired element")}
  8. TimeoutException
  当WebDriver超过了执行下一步的等待时限时,Selenium中可能会产生此类异常。Selenium的各种等待通常被用于避免出现ElementNotVisibleException之类的异常。不过,即使在使用了适当的等待之后,如果元素仍然不可交互,那么TimeoutException也会被抛出。为此,我们必须通过执行手动测试,来检验元素的延时性,以便采取进一步的处理等待。
   9. InvalidSelectorException
  当使用无效的或不正确的选择器时,Selenium中会抛出此类异常。当然,类似情况也可能发生在创建XPATH时。对此,我们需要在将代码推送到主分支之前,检查测试脚本,并测试脚本的端到端流程。此外,SelectorHub和ChroPath等工具,也可以被用于验证定位器。
   10. NoSuchFrameException
  NoSuchFrameException属于NotFoundException类的子类。当WebDriver尝试着切换到当前网页上无效的、或不存在的框架时,Selenium可能会产生此类异常。为此,我们需要首先确保框架的名称或id是正确的;其次,应确保框架的加载不会过于消耗时间。当然,如果在网页上加载框架的确非常耗时的话,则需要修正相应的等待处理。例如:
  try {
  driver.switchTo().frame("frame_1"); } catch(NoSuchFrameException e){
  System.out.println("Could not find the desired frame")
  }
  小结
  综上所述,为了适应各种场景,异常处理对于任何自动化脚本和逻辑结构都是至关重要的。请您务必在了解每个异常特征的基础上,有选择性地在自动化脚本中使用上述十种有关Selenium的常用异常处理命令。

突发!印巴边境遭爆炸袭击,造成数十人伤亡,群众高呼要进行报复据环球时报8月19日援引美联社的消息称,巴基斯坦境内与印度边境靠近的城市巴哈瓦尔纳加尔(Bahawalnagar)刚刚发生了一起爆炸袭击事件。在爆炸发生时,旁边刚好有大量什叶派游行美国马上成为美洲病夫!为了卖药,资本家正突破道德底线根据联合国发布的2019年世界毒品问题报告,2017年,因吸毒死亡的58万5000人中,23是由阿片类药物导致。北美地区的合成阿片类药物过量危机达到了新的高度,美国记录的因过量使用前三季度营收误差高达10亿,海马汽车收监管函,或与小鹏汽车劳燕分飞日前,深交所网站公布了关于对海马汽车股份有限公司的监管函。监管函显示,2021年月4月23日,海马汽车披露了关于会计差错更正的公告,对2020年第一季度报告半年度报告以及第三季度报房贷利率边际松动,银行流动性回暖!刚需购房者受益金九银十之际,从2020年下半年就开始收紧的房贷政策终于松动。国庆节前,央行银保监会等部门召开会议,强调坚持不将房地产作为短期刺激经济的手段,并明确将维护房地产市场的健康发展,维护科大讯飞解飞科大讯飞做AI的核心逻辑是同时解决公平和效率图片来源图虫创意随着数字化浪潮的不断深化,大数据人工智能云计算等技术推动金融业务产生深刻变革。10月25日,以数智化力量创新金融服务为主题,科大讯飞举办智慧金融高峰论坛,邀请来自高A股赚钱机器!41家银行净利润1。5万亿,宇宙行一家抵30家三季报正式收官,A股41家上市银行也迎来大比拼时刻。整体而言,今年前三季度41家上市银行总营收为4。37万亿元,其中营收超过千亿的有13家,营收增速在10以上的有16家银行总体净利万物皆可文创五年新增75000家相关企业,巨头争相落子布局过去提起文创,人们能想到的,也许是景区纪念品店里的老三件钥匙扣书签与建筑模型。但现在,从景区文创影视IP衍生品,到流行文化周边再到IP联名消费品,文创产品的边界已得到极大的拓宽。随日韩杠上了!韩法院下令强征三菱资产,这件事我们应支持韩国近日,韩国地方法院下令强制征收日本三菱公司资产以赔偿第二次世界大战期间遭强征的韩国劳工。日本政府发出警告如果执行该判决,将产生严重的后果。现在强迫劳动的纠纷再起,日韩之间的关系难免市值缩水486亿,隆基股份证实有产品被扣,但我们并不依赖美国市场个人认为有风险性,还是观望为好。11月3日晚,一位投资者在隆基股份(601012。SH)的股吧对公司产品被美国扣留一事给出判断。当天晚间,隆基股份发布澄清公告,对3日有媒体称隆基可妙龄少女应聘殡仪馆工作,背后原因让人听完头皮发麻各位在座的90后们,不知道大家有没有看过一本叫做故事会的一本书,里面的内容汇集了各种千奇百怪的鬼故事,反正当时我是不敢一个人看,还是跟同学一起看的。今年10月份的时候,美国新上映了健康饮茶,从一款智能的Simita茶水分离杯开始Hi大家好,我是三重奏我们知道,茶是一种非常健康的饮品,其富含多酚类氨基酸等的营养元素,喝茶有益健康几乎成为共识。这时如果你对泡茶感兴趣的话,你会发现不同茶叶对于茶具和水温是有一定
说点大白话,Shein到底凭什么值6000亿?Shein再次引起关注。据彭博社报道,Shein正在筹集新一轮的融资,该轮融资后,Shein估值将达到1000亿美元(折合人民币约为6362亿元)。这笔钱有多大,很多人可能没有概念平谷携手阿里巴巴世界级景观平谷桃花海云上绽放春水生,桃花红,平谷春游花海中。烂漫四月,桃花花期又到了。作为世界著名的大桃之乡,平谷的数万亩桃花也如约绽放,把北京东部染成粉红色的海洋。地处北京东北部,京津冀三省市交界处,平谷区SEO及搜索引擎的增长策略(2。0版)1当下搜索市场趋势首先,我们优先展开当下搜索市场趋势及模块通识内容的了解学习。正常状态下,搜索都是由意图引发的用户想要查询特定的信息,而不是仅仅意外浏览到相关页面。从意图来看,搜索4月里,你会为了以下新剧,而购买优爱腾的VIP吗最近腾讯视频宣布VIP会员涨价的消息,想必大家都关注到了,如今是个知识付费的时代,你喜欢的音乐电影电视剧电子书等等,都是需要购买会员,才能完整享受其中的内容,而其中电视剧陪伴大家的以案释法不同时间不同用户显示不同界面,这个幽灵APP牵出庞大黑灰产业链一个电商App白天出售母婴日用品到了夜晚却摇身一变各类国内社交软件账号被明码标价匿名交易生意火爆大量的买家却来自境外近日,安徽警方铲除一条收购各类社交账户的庞大黑灰产业链打掉黑灰产天准科技2021年净利1。34亿同比增长24。91董事长徐一华薪酬56。52万挖贝网4月14日,天准科技(688003)近日发布2021年度报告,报告期内公司实现营业收入1,265,238,702。28元,同比增长31。23归属于上市公司股东的净利润134,国家发改委一季度中国新建8。1万个5G基站总规模超150。6万个中新社北京4月15日电(记者庞无忌)中国国家发展和改革委员会创新和高技术发展司副司长一级巡视员孙伟15日在北京透露,今年一季度,国内新建5G基站8。1万个,总规模超过150。6万个曲屏电视是否过时了,还能买吗?谢邀,说起电视机可谓是承载了70,80后最美好的童年时代,可如今再也找不到那个时候的快乐了。最大的90后可能对电视机还有一定的怀旧感情,00后的基本对电视机没有什么概念,题主问到曲耳聋严重影响生活怎么办?你好,耳聋会严重影响日常生活,因为耳聋的人,过马路的时候听不到车的声音,这会导致过马路的时候发生严重的交通事故,所以过马路的时候一定要注意安全。聋的患者日常生活中一定要注意佩戴助听从任正非身上能学到什么宝贵的经验与精神?前一段时间,我问我父亲见没见过任正非,他说见过一次,那还是八十年代初的时候在深圳,他还跟我说华为刚开始的时候挺坚苦的。我父亲哈工大的同学那时担任电子部计划司的司长,主持了很多的国家柳传志,为什么叫柳八爷有什么典故吗?八父这个称呼,应该是来自康熙时期以八贝勒胤禩的称呼。八贝勒胤禩老谋深算,辗转腾挪,结党营私,图谋不规,危害政权,最后被雍正皇帝清算。柳教爷成立泰山会,所作所为,拥有的智慧,可能与八