• selenium2 定位 窗体切换等等 (二)


    定位用的html素材有两个

    demo.html

    <html>
    <head>
        <title>UI Automation Testing</title>
    </head>
    <style type="text/css">
        table{font-size:20;text-align:center;width:80%;border-collapse:collapse;margin:auto}    
        table th{background: #ccc}
        .display{color:red}
        .widgetStyle{text-align:left;padding-left:100px}    
    </style>
    <script>
    function display_alert(){
      alert("I am an alert box!!")
    }
    function show_div(){   
        setTimeout("create_div()", 3000);   
    }      
    function create_div(){   
        d = document.createElement('div');     
        d.className = "red";  
        d.style.color='red';
        d.innerHTML="wait for display";
        document.getElementById("display").appendChild(d);   
    }   
    function mouseOver(){
        document.getElementById("over").innerHTML="<div class='display'>Hello World!</div>";
    }
    function mouseOut(){
        document.getElementById("over").innerHTML="";
    }
    </script>
    <body>
    <div>
        <div class="text" style="font-size:36;text-align:center"><b>UI Automation Testing</b></div>
        <br/>
        <table cellpadding="10" cellspacing="0" border="1">
            <thead>
                <tr>
                    <th width=20% class="widgetleft">Widget Name</th>
                    <th width=80% class="widgetStyle">Widget Operate</th>                
                </tr>
            </thead>
                    <tbody>
                        <tr>
                            <td>Input</td>
                            <td class="widgetStyle"><div id='input'><input type="text" id="user"/></div></td>                                            
                        </tr>
                        <tr>
                            <td>Link</td>
                            <td class="widgetStyle"><div id='link'><a href="http://www.baidu.com" class='baidu'>baidu</a></div></td>                        
                        </tr>
                        <tr>
                            <td>Select</td>
                            <td class="widgetStyle"><div id='select'>
                                    <select name='select'>
                                      <option value ="volvo">Volvo</option>
                                      <option value ="saab">Saab</option>
                                      <option value="opel">Opel</option>
                                      <option value="audi">Audi</option>
                                    </select>
                                </div>
                            </td>                        
                        </tr>
                        <tr>
                            <td>RadioBox</td>
                            <td class="widgetStyle">
                                <div id='radio'>
                                    <input type='radio' name="identity" class='Volvo'/><label>Volvo</label></br>
                                    <input type='radio' name="identity" class='Saab'/><label>Saab</label></br>
                                    <input type='radio' name="identity" class='Opel'/><label>Opel</label></br>
                                    <input type='radio' name="identity" class='Audi'/><label>Audi</label>
                                </div>
                            
                            </td>                        
                        </tr>
                        <tr>
                            <td>CheckBox</td>
                            <td class="widgetStyle">
                                <div id='checkbox'>
                                    <input type="checkbox" name="checkbox1"/><label>Volvo</label></br>
                                    <input type="checkbox" name="checkbox2"/><label>Saab</label></br>
                                    <input type="checkbox" name="checkbox3"/><label>Opel</label></br>
                                    <input type="checkbox" name="checkbox4"/><label>Audi</label> 
                                </div>
                            </td>                        
                        </tr>
                        <tr>
                            <td>Button</td>
                            <td class="widgetStyle"><div id='button'><input type='button' class='button' value='Submit' disabled="disabled"/></div></td>                        
                        </tr>
                        <tr>
                            <td>Alert</td>
                            <td class="widgetStyle"><div id='alert'><input type='button' class='alert' value='Alert' onclick='display_alert()'/></div></td>                        
                        </tr>
                        <tr>
                            <td>Upload</td>
                            <td class="widgetStyle"><div id='upload'><input type='file' id='load'/></div></td>                        
                        </tr>
                        <tr>
                            <td>Open New Window</td>
                            <td class="widgetStyle"><div id='open'><a href="http://baidu.com" class='open' target='_bank'>Open new window</a></div></td>                        
                        </tr>
                        <tr>
                            <td>Action</td>
                            <td class="widgetStyle"><div id='action'>
                                    <input type='button' class='over' value='Action'onmouseover="mouseOver()" onmouseout="mouseOut()"/><div id='over'></div>
                                </div>
                            </td>                        
                        </tr>
                        <tr>
                            <td>Wait</td>
                            <td class="widgetStyle">
                                <div id='wait'><input type='button' class='wait' value='Wait' onclick = "show_div()"/></div>
                                <div id='display'></div>
                            </td>                        
                        </tr>
                        <tr>
                            <td>Iframe</td>
                            <td class="widgetStyle">
                                <iframe width=800 height=330 name=aa frameborder=0 src="./demo1.html"></iframe>
                            </td>                        
                        </tr>
                    </tbody>
                
            
        </table>
        <br/>
    </div>
    </body>
    </html>
    View Code

    demo1.html

    <html>
    <head>
        <title>UI Automation Testing</title>
    </head>
    <style type="text/css">
        table{font-size:20;text-align:center;width:80%;border-collapse:collapse;margin:auto}    
        table th{background: #ccc}
        .display{color:red}
        .widgetStyle{text-align:left;padding-left:100px}    
    </style>
    <script>
    function display_alert(){
      alert("I am an alert box!!")
    }
    function show_div(){   
        setTimeout("create_div()", 5000);   
    }      
    function create_div(){   
        d = document.createElement('div');     
        d.className = "red";  
        d.style.color='red';
        d.innerHTML="wait for display";
        document.getElementById("display").appendChild(d);   
    }   
    function mouseOver(){
        document.getElementById("over").innerHTML="<div class='display'>Hello World!</div>";
    }
    function mouseOut(){
        document.getElementById("over").innerHTML="";
    }
    </script>
    <body>
    <div>
        <div class="text" style="font-size:36;text-align:center"><b>UI Automation Testing</b></div>
        <br/>
        <table cellpadding="10" cellspacing="0" border="1">
            <thead>
                <tr>
                    <th width=20% class="widgetleft">Widget Name</th>
                    <th width=80% class="widgetStyle">Widget Operate</th>                
                </tr>
            </thead>
                    <tbody>
                        <tr>
                            <td>Iframe:Input</td>
                            <td class="widgetStyle"><div id='input'><input type="text" id="user"/></div></td>                                            
                        </tr>
                        <tr>
                            <td>Iframe:Link</td>
                            <td class="widgetStyle"><div id='link'><a href="http://www.baidu.com" class='baidu'>baidu</a></div></td>                        
                        </tr>
                        <tr>
                            <td>Iframe:Select</td>
                            <td class="widgetStyle"><div id='select'>
                                    <select name='select'>
                                      <option value ="volvo">Volvo</option>
                                      <option value ="saab">Saab</option>
                                      <option value="opel">Opel</option>
                                      <option value="audi">Audi</option>
                                    </select>
                                </div>
                            </td>                        
                        </tr>
                        <tr>
                            <td>Iframe:RadioBox</td>
                            <td class="widgetStyle">
                                <div id='radio'>
                                    <input type='radio' name="identity" class='Volvo'/><label>Volvo</label></br>
                                    <input type='radio' name="identity" class='Saab'/><label>Saab</label></br>
                                    <input type='radio' name="identity" class='Opel'/><label>Opel</label></br>
                                    <input type='radio' name="identity" class='Audi'/><label>Audi</label>
                                </div>
                            
                            </td>                        
                        </tr>
                        <tr>
                            <td>Iframe:CheckBox</td>
                            <td class="widgetStyle">
                                <div id='checkbox'>
                                    <input type="checkbox" name="checkbox1"/><label>Volvo</label></br>
                                    <input type="checkbox" name="checkbox2"/><label>Saab</label></br>
                                    <input type="checkbox" name="checkbox3"/><label>Opel</label></br>
                                    <input type="checkbox" name="checkbox4"/><label>Audi</label> 
                                </div>
                            </td>                        
                        </tr>
                        <tr>
                            <td>Iframe:Button</td>
                            <td class="widgetStyle"><div id='button'><input type='button' class='button' value='Submit' disabled="disabled"/></div></td>                        
                        </tr>
                        <tr>
                            <td>Iframe:Alert</td>
                            <td class="widgetStyle"><div id='alert'><input type='button' class='alert' value='Alert' onclick='display_alert()'/></div></td>                        
                        </tr>
                        <tr>
                            <td>Iframe:Upload</td>
                            <td class="widgetStyle"><div id='upload'><input type='file' id='load'/></div></td>                        
                        </tr>
                        <tr>
                            <td>Iframe:Open New Window</td>
                            <td class="widgetStyle"><div id='open'><a href="http://baidu.com" class='open' target='_bank'>Open new window</a></div></td>                        
                        </tr>
                        <tr>
                            <td>Iframe:Action</td>
                            <td class="widgetStyle"><div id='action'>
                                    <input type='button' class='over' value='Action'onmouseover="mouseOver()" onmouseout="mouseOut()"/><div id='over'></div>
                                </div>
                            </td>                        
                        </tr>
                        <tr>
                            <td>Iframe:Wait</td>
                            <td class="widgetStyle">
                                <div id='wait'><input type='button' class='wait' value='Wait' onclick = "show_div()"/></div>
                                <div id='display'></div>
                            </td>                        
                        </tr>                    
                    </tbody>
                
            
        </table>
        <br/>
    </div>
    </body>
    </html>
    View Code

    定位代码:

    代码1:

    package info.milan.webdriver;
    import java.io.File;
    import java.util.List;
    
    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.firefox.FirefoxDriver;
    import org.openqa.selenium.support.ui.Select;
    public class day4 {
        public WebDriver Driver;
        public void startFirefox(){
            Driver = new FirefoxDriver();
            //最大化
            Driver.manage().window().maximize();
        }
        public void closeFirefox(){
            Driver.close();
            Driver.quit();
        }
        public void goTo(){
            File f = new File("html/demo.html");
            Driver.navigate().to(f.getAbsolutePath());
        }
        //输入框定位
        public void testInput(String str){
            ///对于文本框的操作,都使用sendkeys来操作
            Driver.findElement(By.xpath(".//*[@id='user']")).sendKeys(new String[]{str});
            //Driver.findElement(By.xpath(".//*[@id='user']")).clear();
        }
        //超链接定位
        public void testLink(){
            Driver.findElement(By.xpath("//a[@class='baidu']")).click();
        }
        //下拉框定位
        public void testOption(){
            WebElement element= Driver.findElement(By.cssSelector("select[name='select']"));
            Select select = new Select(element);
            select.selectByValue("audi");
            select.selectByIndex(1);
            select.selectByVisibleText("Audi");
            System.out.println(select.getFirstSelectedOption().getText());
            List<WebElement> options= select.getOptions();
            int optionsSize = options.size();
            System.out.println("options一共有多少个:"+optionsSize);
            for(int i =0;i<optionsSize;i++){
                select.selectByIndex(i);
            }
        }
        //单选框定位
        public void testRadio(){
            //name定位
            List<WebElement> elements= Driver.findElements(By.name("identity"));
            WebElement el= elements.get(2);
            el.click();
            boolean isSelect = el.isSelected();
            System.out.println("是否被选中:"+elements.get(3).isSelected());
        }
        //定位复选框
        public void testCheckBox(){
            //xpath定位
            List<WebElement> elements= Driver.findElements(By.xpath(".//div[@id='checkbox']/input"));
            elements.get(2).click();
    //        elements.get(0).click();
            for (WebElement e : elements){
                if (!e.isSelected()){
                    e.click();
                }
            }
        }
        public void testButton(){
            WebElement element= Driver.findElement(By.xpath(".//div[@id='alert']/input"));
            element.click();
        }
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            day4 t = new day4();
            t.startFirefox();
            t.goTo();
            t.testInput("你好");    
            //t.testLink();
            t.testCheckBox();
            t.testRadio();
        }
    
    }

    代码2:

    package info.milan.webdriver;
    import java.io.File;
    import java.util.Set;
    
    import org.openqa.selenium.Alert;
    import org.openqa.selenium.By;
    import org.openqa.selenium.JavascriptExecutor;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.firefox.FirefoxDriver;
    import org.openqa.selenium.interactions.Actions;
    import org.openqa.selenium.support.ui.ExpectedCondition;
    import org.openqa.selenium.support.ui.WebDriverWait;
    public class day5 {
        public WebDriver Driver;
        public void startFirefox(){
            Driver = new FirefoxDriver();
            Driver.manage().window().maximize();
        }
        public void closeFirefox(){
            Driver.close();
            Driver.quit();
        }
        public void goTo(){
            File f = new File("html/demo.html");
            Driver.navigate().to(f.getAbsolutePath());
        }
        //模拟点击弹出窗alert的确定。
        public void testAlert(){
            WebElement element= Driver.findElement(By.className("alert"));
            //element.click();
            Actions action = new Actions(Driver);
            action.click(element).perform();
            //获取当前弹出的alert窗
            Alert alert = Driver.switchTo().alert();
            String alertMessage  = alert.getText();
            System.out.println(alertMessage);
            ///模拟点击alert确认按钮
            alert.accept();
        }
        public void testAction(){
            WebElement element= Driver.findElement(By.className("over"));
            Actions action = new Actions(Driver);
            //将鼠标移动到Action的按钮上面
            action.moveToElement(element).perform();
            //输出鼠标移动到action按钮上面后显示的文字。
            System.out.println( Driver.findElement(By.id("over")).getText());;
        }
        //上传
        public void testUpload(){
            WebElement element= Driver.findElement(By.id("load"));
            element.sendKeys("C:\Users\Administrator\Desktop\123.xls");
        }
        //运行一段js
        public void testJs(){
            JavascriptExecutor javascript =(JavascriptExecutor)Driver;
            javascript.executeScript("alert('你好!')");
            
        }
        //对iframe中元素的操作
        public void testIframe(){
            Driver.findElement(By.id("user")).sendKeys("my test");
            
            WebElement element = Driver.findElement(By.name("aa"));
            Driver.switchTo().frame(element);
            //Driver.switchTo().frame("aa");
            //Driver.switchTo().frame(0);
            Driver.findElement(By.id("user")).sendKeys("iframe test");
            
            Driver.switchTo().defaultContent();
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            Driver.findElement(By.id("user")).sendKeys("my end test");
        }
        //对多个窗口进行切换操作
        public void testMultiWindow(){
            WebElement element = Driver.findElement(By.className("open"));
            element.click();
            Set<String> handles = Driver.getWindowHandles();
            String handle = Driver.getWindowHandle(); //得到默认最初窗体句柄
            
            handles.remove(handle);
            String newHandle = handles.iterator().next();
            print(newHandle);
            print(handle);
            Driver.switchTo().window(newHandle);
            try {
                Thread.sleep(3000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            Driver.findElement(By.id("kw")).sendKeys("myString");
            //Driver.close();
            Driver.switchTo().window(handle);
            Driver.findElement(By.id("user")).sendKeys("new test");
            
        }
        //获取延时信息,常用于操作ajax请求返回的信息
        public void testWait(){
            WebElement element = Driver.findElement(By.className("wait"));
            element.click();
            //方法1 用Thread.sleep,设置了10秒,只能10秒后才能获取数据。
    //        try {
    //            Thread.sleep(6000);
    //        } catch (InterruptedException e) {
    //            // TODO Auto-generated catch block
    //            e.printStackTrace();
    //        }
            //Driver.manage().timeouts().implicitlyWait(12, TimeUnit.SECONDS);
            //方法2  用WebDriverWait,设置了10秒 如果数据5秒就返回的话,5秒就能获取到数据
            boolean wait = new WebDriverWait(Driver,10).until(new    ExpectedCondition<Boolean>() {
                public Boolean apply(WebDriver    d) {
                    return    d.findElement(By.className("red")).    isDisplayed();}
            });
            
            print(String.valueOf(wait) );
            WebElement elementRed = Driver.findElement(By.className("red"));
            String str = elementRed.getText();
            print(str);
            
            
        }
        public void print(String str){
            System.out.println(str);
            
        }
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            day5 t = new day5();
            t.startFirefox();
            t.goTo();
    //        t.testMultiWindow();    
    //        t.testWait();
            //t.testAction();
            //t.testUpload();
            t.testWait();
        }
    
    }
  • 相关阅读:
    【转载】Python中如何高效实现两个字典合并,三种方法比较。
    闭包在python中的应用,translate和maketrans方法详解
    python中的多线程【转】
    二叉树非递归遍历方法小结
    Mac OS X 10.9 编译C++11
    LeetCode--Reverse Words in a String
    LeetCode ---Anagrams() 详解
    KMP算法的代码实现
    Mac OS10.9 下python开发环境(eclipse)以及自然语言包NLTK的安装与注意
    秋季面试准备(1)——atoi的实现以及C++库函数stringstream
  • 原文地址:https://www.cnblogs.com/milanmi/p/4635833.html
Copyright © 2020-2023  润新知