Selenium兼容性问题注意

不知道是selenium兼容做的不好,还是浏览器自身运行速度和解析的关系,每次项目在chrome上跑得时候没有问题,可以到chrome和safari上就有很多问题出现。下面一一总结出现的问题以及解决方案。


1、当页面跳转后,防止jQuery ajax等事件未加载出需要操作的元素时,可以使用下面代码控制元素出现后再执行操作。

[html] view plain copy  print?
  1. public static void waitForPage(WebDriverWait wait, By by) {  
  2.         wait.until(ExpectedConditions.presenceOfElementLocated(by));  
  3.     }  


2、当页面在chrome上跳转时,验证跳转的url是否和excepted的url一致时,会出现运行过快url判断还停留在上一个url的问题。

[html] view plain copy  print?
  1. /**  
  2.      * set i=50 (one is 100 millseconds) represent 5 seconds  
  3.      * @param url expected url  
  4.      */  
  5.     public static void pageload(String url){  
  6.         WebDriver driver = new IndexPage().getDriver();  
  7.         int i=0;  
  8.         while(i < 50) {  
  9.             i++;  
  10.             if(driver.getCurrentUrl().equals(url)) {  
  11.                 break;  
  12.             } else {  
  13.                 try {  
  14.                     Thread.sleep(100);  
  15.                 } catch (InterruptedException e) {  
  16.                     e.printStackTrace();  
  17.                 }  
  18.             }  
  19.         }  
  20.     }  


3、当在chrome上运行弹框时,会出现如下错误:NoSuchAlertError: no alert open,解决方案可能有的人在Alert之前sleep一秒,但是我觉得这样做是不正确的,正确的做法如下:

[html] view plain copy  print?
  1. public static void waitForAlert(WebDriverWait wait) {  
  2.         wait.until(ExpectedConditions.alertIsPresent());  
  3.     }  
上一篇:使用netdiscover进行网络发现


下一篇:jquery事件-resize()方法