您的位置:新葡亰496net > 奥门新萄京娱乐场 > 新葡亰496netselenium窗口切换脚本,chrome在新标签页

新葡亰496netselenium窗口切换脚本,chrome在新标签页

发布时间:2019-11-23 15:38编辑:奥门新萄京娱乐场浏览(92)

    目前chrome是我在实现webdriver时运行最稳定的浏览器,如何利用webdriver打开多个标签页和链接呢,到处查找得到的往往只是如何打开标签页。
    打开标签页很简单,chrome浏览器打开标签页的快捷键是ctrl t,那把ctrl t的按键事件传入即可,很多种实现方式,以下只列出两种:
    1:
    Actions actionOpenLinkInNewTab = new Actions(driver);
    actionOpenLinkInNewTab.keyDown(Keys.CONTROL).sendKeys("t").keyUp(Keys.CONTROL).perform();

    package Testing1;

     Selenium 2.0 WebDriver 自动化测试 使用教程 实例教程 API快速参考

    2:
    driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL "t");

    import java.util.ArrayList;
    import java.util.List;
    import java.util.Set;

     

    在新标签页打开新的链接全部代码(Google到的):
    String baseUrl = "";
    driver.get(baseUrl);
    driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL "t");

    import org.openqa.selenium.By;

    //System.setProperty("webdriver.firefox.bin", "E:/firefox/firefox.exe");
    //FirefoxDriver dr = new FirefoxDriver();

    ArrayList<String> tabs = new ArrayList<String> (driver.getWindowHandles());
    driver.switchTo().window(tabs.get(1)); //switches to new tab
    driver.get("");

    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.chrome.ChromeDriver;

    ============ Selenium 2.0 WebDriver API  Demo ==========

    driver.switchTo().window(tabs.get(0)); // switch back to main screen
    driver.get("");

    public class DengLu2 {

    [java] view plaincopy

     

    public static void main(String[] args) {
    System.setProperty("webdriver.chrome.driver", "D:/webdriver/chromedriver.exe");
    WebDriver chrome = new ChromeDriver();
    chrome.get("");
    chrome.findElement(By.linkText("登录")).click();
    Set<String> windows = chrome.getWindowHandles();

    1. package example;  
    2.   
    3. import org.openqa.selenium.By;  
    4. import org.openqa.selenium.WebDriver;  
    5. import org.openqa.selenium.WebElement;  
    6. import org.openqa.selenium.chrome.ChromeDriver;  
    7. import org.openqa.selenium.support.ui.ExpectedCondition;  
    8. import org.openqa.selenium.support.ui.WebDriverWait;  
    9.   
    10. import util.Log;  
    11. import util.SeleniumUtil;  
    12.   
    13. public class TestAllInOne {  
    14.     public static final String BASE_URL = "";  
    15.   
    16.     public static void main(String[] args) throws Exception {  
    17.         System.setProperty("webdriver.chrome.driver", "E:/0down/selenium/chromedriver.exe");  
    18.           
    19.         //打开firefox  
    20.         ChromeDriver dr = new ChromeDriver();  
    21.           
    22.         //访问页面  
    23.         dr.get(BASE_URL);  
    24. //      dr.navigate().to(BASE_URL);//与dr.get()效果相同  
    25. //      dr.navigate().forward();//让浏览器前进一步  
    26. //      dr.navigate().back();//让浏览器后退一步  
    27.         Log.Info(dr.getPageSource());  
    28.           
    29.         //等待页面加载完毕,直到条件满足  
    30.         (new WebDriverWait(dr, 10)).until(new ExpectedCondition<Boolean>() {  
    31.             public Boolean apply(WebDriver dr) {  
    32.                 Log.Info("web driver wait...");  
    33.                 int index = dr.getPageSource().indexOf("京ICP证030173号");  
    34.                 if(index != -1){  
    35.                     Log.Info("web driver wait, true...");  
    36.                     return true;  
    37.                 }else{  
    38.                     Log.Info("web driver wait, false...");  
    39.                     return false;  
    40.                 }  
    41.             }  
    42.         });  
    43.           
    44.         //等待页面加载完毕,直到条件满足,一个while循环,也挺简单的吧  
    45.         /* 
    46.         while(true){ 
    47.              Log.Info("wait for..."); 
    48.             int index = dr.getPageSource().indexOf("京ICP证030173号"); 
    49.             if(index != -1){ 
    50.                 Log.Info("wait for, true..."); 
    51.                 break; 
    52.             } 
    53.             Thread.sleep(1 * 1000); 
    54.         }*/  
    55.           
    56.         //等待元素加载完成  
    57. //      (new WebDriverWait(dr, 10)).until(  
    58. //          ExpectedConditions.presenceOfElementLocated(By.id("kw"))  
    59. //      );  
    60.           
    61.         //等待元素加载完成,并可点击  
    62. //      WebDriverWait wait = new WebDriverWait(dr, 10);  
    63. //      wait.until(ExpectedConditions.elementToBeClickable(By.id("su")));  
    64.           
    65.         //全局性的影响,只要WebDriver不消失,每隔10秒检查元素是否加载完成,直到加载完成。  
    66. //      dr.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);  
    67. //      dr.get("");  
    68. //      dr.findElement(By.id("myDynamicElement"));  
    69.           
    70. //      WebElement we = dr.findElement(By.id("kw"));  
    71. //      we.sendKeys("selenium");  
    72. //      we.click();  
    73.           
    74. //      dr.findElement(By.id("元素id"));//最常用  
    75. //      dr.findElement(By.className("class名称"));//比较常用  
    76. //      dr.findElement(By.tagName("tag名称"));//比较常用  
    77. //      dr.findElement(By.cssSelector("css选择器"));//比较常用  
    78. //      dr.findElement(By.name("元素的name属性"));//比较常用  
    79. //      dr.findElement(By.linkText("超链接的内容"));//不常用  
    80. //      dr.findElement(By.partialLinkText("超链接的部分内容"));//不常用  
    81. //      dr.findElement(By.xpath("xpath表达式"));//不常用  
    82.           
    83.         //1:用java从文本中读取jQuery,并用WebDriver加载jQuery  
    84.         SeleniumUtil.LoadAndExecuteJQuery(dr);  
    85.         //2:用WebDriver执行你写的jQuery代码,可以返回单个元素,也可以返回元素数组,或无返回值  
    86.         //执行你的jQuery代码,既然能执行自已的jQuery代码,就能做任何事情了  
    87.         dr.executeScript("$('#kw').val('selenium'); $('#kw').val($('#kw').val()   ' java');");  
    88.         //也可以用WebDriver API进行页面元素的操作  
    89.         WebElement el = dr.findElement(By.id("kw"));  
    90.         el.sendKeys("selenium java");  
    91.         dr.findElement(By.id("su")).click();  
    92.           
    93.         //WebDriver专用的select下接框处理类  
    94.         /* 
    95.         List<WebElement> elList = dr.findElements(By.tagName("select")); 
    96.         if(elList != null && elList.size() > 0){ 
    97.             Select select = new Select(elList.get(0)); 
    98.             select.deselectAll(); 
    99.             select.selectByVisibleText("Edam"); 
    100.             select.selectByIndex(1); 
    101.             select.selectByValue("10010"); 
    102.         }*/  
    103.           
    104.         //window和frame的切换  
    105. 新葡亰496netselenium窗口切换脚本,chrome在新标签页打开链接的方法。        /* 
    106.         dr.switchTo().window("xxName"); 
    107.         dr.switchTo().frame("xxName"); 
    108.         */  
    109.           
    110.         //浏览器自带的alert弹出框的处理  
    111.         /* 
    112.         Alert alert = dr.switchTo().alert(); 
    113.         if(alert != null){ 
    114.             alert.accept(); 
    115.             alert.dismiss(); 
    116.             alert.sendKeys("collonn"); 
    117.         }*/  
    118.           
    119.         /* 
    120.         //用jQuery查找一个元素 
    121.         WebElement wea = (WebElement)dr.executeScript("return $('#kw').get(0);"); 
    122.         //用jQuery查找一组元素 
    123.         List<WebElement> weaList = (List<WebElement>)dr.executeScript("return $('.stu_info').get();"); 
    124. 新葡亰496net,        //返回Boolean 
    125.         Boolean flagB = (Boolean)dr.executeScript("return true;"); 
    126.         //返回Double 
    127.         Double flagD = (Double)dr.executeScript("return 12.12;"); 
    128.         //返回Long 
    129.         Long flagL = (Long)dr.executeScript("return 123;"); 
    130.         //返回String 
    131.         String flagS = (String)dr.executeScript("return 'collonn';"); 
    132.         //返回String数组 
    133.         List<String> flagSs = (List<String>)dr.executeScript("var ary = ['a', 'b', 'c']; return ary;"); 
    134.         */  
    135.           
    136.         //保存网面截图  
    137.         SeleniumUtil.TakeScreenshot(dr, null);  
    138.           
    139.         //关闭浏览器  
    140.         dr.quit();  
    141.     }  
    142.   
    143. }  

    url:

    //get 获得

    // window 窗口
    // Handles 句柄,把手
    // set是集合的意思
    // set<String> 是一个文本类型的集合,集合里的每一个元素都是String类型的
    String cw = chrome.getWindowHandle(); // 返回当前selenium所在的窗口,第一个窗口
    for (String s : windows) {
    // windows 有两个值,所以循环两次
    // 第二种for循环的写法,挨个循环集合中的所有元素
    if(s.equals(cw)) {
    chrome.close();
    } else {
    chrome.switchTo().window(s);
    // switch 切换的意思,switchTo 切换到 新窗口 s
    }
    }

    chrome.findElement(By.id("username")).sendKeys("changcheng");

    }

    }

    本文由新葡亰496net发布于奥门新萄京娱乐场,转载请注明出处:新葡亰496netselenium窗口切换脚本,chrome在新标签页

    关键词: