zoukankan      html  css  js  c++  java
  • selenium+java多层级frame切换的问题

      关于selenium多层iframe切换,及iframe没有id和name属性的情况下进行切换的问题。(如下图:)

      问题:  

      1. 在切入到frame:left中后,直接切换其他同级和上级frame报错

      2. 在切入到frame:left中后,再切换到它下面的frame:index时后无法直接定位要获取的div如上图

      原因分析:

      问题1:在切入到frame:left中后,要切换到与left同级的frame:index中,需先切回到初始状态defaultContent。然后再逐级向内层的frame中切换

      问题2:在切入到内层的frame:index中后,发现还有一个iframe没有名称和id,需要先切换到该iframe中才能定位到需要的div

      代码如下:

      

     1 public class testFrame {  
     2   
     3     private WebDriver driver;  
     4     private String baseUrl;  
     5     private WebDriverWait wait;  
     6   
     7     @Before  
     8     public void setUp() {  
     9         driver = new FirefoxDriver();  
    10         baseUrl = "http://XXXX";  
    11         wait = new WebDriverWait(driver, 5);  
    12         driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);  
    13     }  
    14   
    15     @Test  
    16     public void testFrame() throws InterruptedException {  
    17         driver.get(baseUrl);  
    18         wait.until(new ExpectedCondition<WebElement>() {  
    19   
    20             @Override  
    21             public WebElement apply(WebDriver d) {  
    22                 // TODO Auto-generated method stub  
    23                 return d.findElement(By.tagName("frame"));  
    24             }  
    25   
    26         });  
    27         driver.switchTo().frame("index");  
    28         driver.switchTo().frame("mainindex");  
    29         driver.switchTo().frame("left");  
    30         driver.findElement(By.xpath("//li[2]/span")).click();  
    31         driver.findElement(By.xpath("//li[3]/span")).click();  
    32         driver.findElement(By.xpath("//li[3]/ul/li/a/span")).click();  
    33         driver.switchTo().defaultContent();  
    34         driver.switchTo().frame("index");  
    35         driver.switchTo().frame("mainindex");  
    36         driver.switchTo().frame("index");  
    37         driver.switchTo().frame(driver.findElement(By.tagName("iframe")));  
    38         driver.findElement(By.xpath("/html/body/div/div"));  
    39     }  
    40   
    41     @After  
    42     public void tearDown() {  
    43         driver.quit();  
    44     }  
    45 }  
  • 相关阅读:
    整数转字符串
    SharePoint介绍性文章
    Disable Sharepoint 2007 show as System Account when system admin login
    通过IP地址获得主机名
    从文本文件读取信息
    数据库连接池问题[转]
    企业类库问题 public key 问题[经过自己测试]
    Google Analytics异步代码创建虚拟浏览量跟踪
    同一主机上WordPress博客更换域名简易八步骤(2)
    关于application/xwwwformurlencoded等字符编码的解释说明
  • 原文地址:https://www.cnblogs.com/iceb/p/7264427.html
Copyright © 2011-2022 走看看