selenium 多表單切換處理(iframe/frame)


在web應用中,前台網頁的設計一般會用到iframe/frame表單嵌套頁面的應用。簡單的就是一個頁面簽嵌套多個HEML/JSP文件。selenium webdriver  只能在同一頁面識別定位元素,可以狹隘的理解成只能識別當前所在位置的頁面上的元素。對於不同的iframe/frame表單中的元素是無法直接定位的。需要結合switchTo().frame()方法切換到指定的frame/iframe中。switchTo().frame()默認的是取表單的ID和name屬性。如果沒有id和name ,可通過Xpath路徑定位。

對表單操作完成之后可以通過driver.switchTo().defaultContent();跳出表單。

以下是練習窗口切換的指定表單的HTML代碼。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>窗口切換</title>
</head>
<frameset rows="15%,*,15%" ,border="0" scrolling="no"
    noresize="noresize">
    <frame src="https://www.baidu.com/" name="top" noresize="noresize" />
    <frame src="http://www.sina.com.cn/" name="body" />
    <frame src="https://www.taobao.com/" name="bottom" />
</frameset>
</frameset>
</html>
    public static void main(String[] args) {

        System.setProperty("webdriver.firefox.bin", "D:\\Mozilla Firefox\\firefox.exe");

        WebDriver driver = new FirefoxDriver();
        File file = new File("C:\\Users\\Administrator\\Desktop\\NewFile.html");
        driver.get(file.getAbsolutePath());
        driver.manage().timeouts().pageLoadTimeout(60, TimeUnit.SECONDS);
        // 設置頁面加載時間為5秒
        driver.switchTo().frame("top");
        // 表單切換到最頂層的frame中。
        driver.findElement(By.id("kw")).sendKeys("selenium學習");
        // 在百度輸入框中輸入selenium學習
        driver.switchTo().defaultContent();
        // 返回到上一級表達
        driver.switchTo().frame("body");
        // 切換到中間表單,name="body"
        driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
        driver.findElement(By.linkText("房產")).click();
        driver.switchTo().defaultContent();
        // 每次進入一個表單。操作元素之后 ,盡量跳回上一層或者最外層再進入其它表達操作元素。
        driver.close();
        driver.quit();

    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM