一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

!selenium 總結(jié)篇,常見(jiàn)方法和頁(yè)面元素的操作

 看見(jiàn)就非常 2015-09-18

今天,總結(jié)一下selenium怎么操作web頁(yè)面常見(jiàn)的元素。

主要有:

  • 上傳
  • alter dialog
  • prompt dialog
  • confirm dialog
  • select list
  • radio box
  • input box
  • checkBox

測(cè)試頁(yè)面如下:

View Code

selenium 最核心的技巧是WebElement的識(shí)別和定位

selenium總共有八種定位方法 

  1.  By.id()  通過(guò)id定位
  2.  By.name()  通過(guò)name 定位
  3.  By.xpath() 通過(guò)xpath定位
  4.  By.className() 通過(guò)className定位
  5.  By.cssSelector() 通過(guò)CSS 定位
  6.  By.linkText() 通過(guò)linkText
  7.  By.tagName() 通過(guò)tagName
  8.  By.partialLinkText() 通過(guò)匹到的部分linkText

目前,使用比較多的是cssSelector和xpath,因?yàn)橐粋€(gè)頁(yè)面中Id name className tagName LinkText等比較容易重復(fù) 不容易 確定唯一

接下來(lái)會(huì)有具體的例子來(lái)演示如何定位   


 

上傳文件

一般,上傳頁(yè)面如果是input,像這樣的,可以使用sendkeys

 

首先,這里使用xpath定位到該元素,然后使用sendKeys即可,sendKeys send你要上傳的文件的絕對(duì)路徑

1 //td/input[@type='file']

也可以使用cssSelector,關(guān)于xpath和cssSelector更多知識(shí),以后會(huì)做一些專(zhuān)題

1 td>input[type='file']

如何驗(yàn)證你寫(xiě)的xptah/cssSelector是正確的呢?

有以下幾種方法:

  • F12 ,使用瀏覽器的console  ,xpath使用$x()  function,css使用    $() function                                                          
  • 使用第三方插件firebug
  • 使用selenium IDE

 

alert對(duì)話框

 細(xì)分三種,Alert,prompt,confirm

 Selenium有以下方法:

     

 Alert alert =driver.switchTo().alert();

 

 

      1. driver.switchTo().alert();  獲取alert

      2. alert.accept(); 點(diǎn)確定

      3. alert.dismiss(); 點(diǎn)取消

      4. alert.getText();獲取alert的內(nèi)容

 

    


 

select菜單

    select也是比較常見(jiàn)的,selenium封裝了以下方法

    創(chuàng)建select

   

WebElement selector = driver.findElement(By.id("Selector"));
Select select = new Select(selector);

   

選擇select的option有以下三種方法

  • selectByIndex(int index) 通過(guò)index
  • selectByVisibleText(String text) 通過(guò)匹配到的可見(jiàn)字符
  • selectByValue(String value) 通過(guò)匹配到標(biāo)簽里的value
WebElement selector = driver.findElement(By.id("Selector"));
        Select select = new Select(selector);
        select.selectByIndex(3);
        select.selectByVisibleText("桃子");
        select.selectByValue("apple");

輸入框

輸入框就比較簡(jiǎn)單了,不再多說(shuō)

sendKeys()輸入內(nèi)容

clear()  清空


 

單選框(RadioBox)

單選框可以有獲取狀態(tài),是否被選中

radioBox.isSelected();

是否enable

radioBox.isEnabled()

使用click方法選中


 

復(fù)選框(checkBox)

復(fù)選框和單選框基本差不多,此處略


 

超鏈接

超鏈接比較常見(jiàn),一般都是標(biāo)簽a

<a href="http://www.cnblogs.com/tobecrazy/" >Copyright 2015 to be crazy </a>

一般使用click方法

這里我們了解一下瀏覽器打開(kāi)超鏈接時(shí),如果是chrome,點(diǎn)超鏈接的同時(shí)按下Ctrl會(huì)打開(kāi)新標(biāo)簽,按下shift會(huì)打開(kāi)新窗口

這里單講一下不同窗口切換.

selenium有兩個(gè)關(guān)于獲取窗口的方法:

1. driver.getWindowHandle();  返回的是字符串,獲取當(dāng)前窗口的句柄

2. driver.getWindowHandles(); 返回的是 Set<String> ,獲取所有窗口

如果你想在窗口之間切換

driver.switchTo().window(window);

小技巧: 如何滾動(dòng)到你定位的元素

這里使用java script

// scroll to mylink
        JavascriptExecutor scroll = (JavascriptExecutor) driver;
        scroll.executeScript("arguments[0].scrollIntoView();", myLink);

 

接下來(lái)是所有測(cè)試代碼:

復(fù)制代碼
package com.packt.webdriver.chapter1;

import java.util.List;
import java.util.Set;
import java.util.concurrent.TimeUnit;

import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.ui.Select;
import org.testng.Assert;

import com.packt.webdriver.chapter3.DriverFactory;

/**
 * this method is for deal with base web elements
 * 
 * @author Young
 *
 */
public class dealWithElements {

    public static void main(String[] args) throws Exception {
        String URL = "file://demo.html";
        String chromdriver="E:\\chromedriver.exe";
        System.setProperty("webdriver.chrome.driver", chromdriver);
        ChromeOptions options = new ChromeOptions();
//        options.addExtensions(new File(""));
        DesiredCapabilities capabilities = DesiredCapabilities.chrome();
        capabilities.setCapability("chrome.switches",
                Arrays.asList("--start-maximized"));
        options.addArguments("--test-type", "--start-maximized");
        WebDriver driver=new ChromeDriver(options);

        driver.get(URL);
        // max size the browser
        driver.manage().window().maximize();
        driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);

        WebElement upload = driver.findElement(By
                .xpath("http://td/input[@type='file']"));
        upload.sendKeys("C:/Users/Young/Desktop/demo.html");
        Assert.assertTrue(upload.getAttribute("value").contains("demo"));
        // for alert
        WebElement clickOnAlert = driver.findElement(By
                .xpath("http://td/input[@name='alterbutton']"));
        clickOnAlert.click();
        delay(2);
        // get alert
        Alert alert = driver.switchTo().alert();
        Assert.assertTrue(alert.getText().contains("alert"));
        // click alert ok
        alert.accept();

        delay(2);
        // for prompt
        WebElement clickOnPrompt = driver.findElement(By
                .xpath("http://td/input[@name='promptbutton']"));
        clickOnPrompt.click();
        delay(2);
        Alert prompt = driver.switchTo().alert();

        prompt.sendKeys("I love Selenium");
        prompt.accept();
        delay(5);
        Alert afterAccept = driver.switchTo().alert();
        Assert.assertTrue(afterAccept.getText().contains("I love Selenium"));
        // click alert ok
        afterAccept.accept();
        delay(2);
        // for confirm
        WebElement clickOnConfirm = driver.findElement(By
                .xpath("http://td/input[@name='confirmbutton']"));
        clickOnConfirm.click();
        delay(2);
        Alert confirm = driver.switchTo().alert();
        confirm.dismiss();
        delay(2);
        Alert afterDismiss = driver.switchTo().alert();
        Assert.assertTrue(afterDismiss.getText().contains("You pressed Cancel"));
        delay(2);
        afterDismiss.accept();
        driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);

        WebElement selector = driver.findElement(By.id("Selector"));
        Select select = new Select(selector);
        select.selectByIndex(3);
        select.selectByVisibleText("桃子");
        select.selectByValue("apple");

        System.out.println(select.getAllSelectedOptions().toString());
        delay(2);
        WebElement showSelectResult = driver.findElement(By
                .name("showSelectResult"));
        showSelectResult.click();
        delay(2);
        Alert yourSelect = driver.switchTo().alert();
        Assert.assertTrue(yourSelect.getText().contains("蘋(píng)果"));

        delay(2);
        yourSelect.accept();

        // input box
        WebElement editBox = driver.findElement(By
                .xpath("http://td/input[@id='edit']"));
        editBox.sendKeys("Selenium is good");
        WebElement submitButton = driver.findElement(By
                .xpath("http://input[@type='button' and @name='submit']"));
        submitButton.click();
        delay(2);
        Alert submitAlert = driver.switchTo().alert();
        Assert.assertEquals(submitAlert.getText(), "Selenium is good");
        submitAlert.accept();
        delay(2);

        // for radio Box

        WebElement duRadioBox = driver.findElement(By
                .cssSelector("div#radio>input.Baidu"));
        WebElement aLiRadioBox = driver.findElement(By
                .cssSelector("div#radio>input.Alibaba"));
        WebElement TXRadioBox = driver.findElement(By
                .cssSelector("div#radio>input.Tencent"));
        WebElement MiRadioBox = driver.findElement(By
                .cssSelector("div#radio>input.Mi"));
        delay(2);
        Assert.assertTrue(TXRadioBox.isSelected());
        Assert.assertTrue(!MiRadioBox.isEnabled());
        delay(2);
        duRadioBox.click();
        Assert.assertTrue(duRadioBox.isSelected());
        delay(2);

        aLiRadioBox.click();
        Assert.assertTrue(aLiRadioBox.isSelected());
        delay(2);

        // for checkBox

        List<WebElement> webCheckBox = driver.findElements(By
                .xpath("http://input[@type='checkbox']"));

        for (WebElement e : webCheckBox) {
            e.click();
            Assert.assertTrue(e.isSelected());
            delay(2);
        }

        // for links
        String defaultWindow = driver.getWindowHandle();
        WebElement myLink = driver.findElement(By
                .linkText("Copyright 2015 to be crazy"));
        delay(3);
        // scroll to mylink
        JavascriptExecutor scroll = (JavascriptExecutor) driver;
        scroll.executeScript("arguments[0].scrollIntoView();", myLink);
        // open link in a new windows press shift when you click
        delay(2);
        Actions actions = new Actions(driver);
        actions.keyDown(Keys.SHIFT).click(myLink).perform();

        delay(3);
        Set<String> currentWindows = driver.getWindowHandles();
        System.out.println(currentWindows.size());
        for (String window : currentWindows) {
            if (!window.endsWith(defaultWindow)) {
                driver = driver.switchTo().window(window);
                driver.manage().timeouts()
                        .pageLoadTimeout(60, TimeUnit.SECONDS);
                driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
                break;
            }
        }

        Assert.assertTrue(driver.getCurrentUrl().contains("tobecrazy"));
        delay(10);

        driver.quit();
    }

    /**
     * @author Young
     * @param seconds
     */
    public static void delay(int seconds) {
        try {
            Thread.sleep(seconds * 1000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
復(fù)制代碼

 

轉(zhuǎn)載請(qǐng)注明出處:http://www.cnblogs.com/tobecrazy/

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多

    美国女大兵激情豪放视频播放| 亚洲中文字幕三区四区| 激情少妇一区二区三区| 青青操视频在线观看国产| 欧美日韩一级黄片免费观看| 久久免费精品拍拍一区二区| 日韩在线一区中文字幕| 免费大片黄在线观看国语| av国产熟妇露脸在线观看| 91欧美日韩中在线视频| 人妻久久一区二区三区精品99| 亚洲国产中文字幕在线观看| 加勒比系列一区二区在线观看| 中文字幕日韩无套内射| 国产精品久久香蕉国产线| 在线中文字幕亚洲欧美一区| 亚洲综合激情另类专区老铁性| 亚洲一区二区三区中文久久| 欧美中文日韩一区久久| 台湾综合熟女一区二区| 五月天六月激情联盟网| 久草国产精品一区二区| 午夜福利视频日本一区| 欧美字幕一区二区三区| 亚洲少妇人妻一区二区| 老熟女露脸一二三四区| 91精品视频免费播放| 精品午夜福利无人区乱码| 国产av一区二区三区四区五区| 99久只有精品免费视频播放| 亚洲国产精品久久综合网| 夫妻性生活动态图视频| 欧美日韩黄片免费试看 | 婷婷激情四射在线观看视频 | 日本人妻丰满熟妇久久| 亚洲品质一区二区三区| 国产成人免费高潮激情电| 黄色av尤物白丝在线播放网址 | 亚洲一区二区精品国产av| 国产成人在线一区二区三区 | 最近最新中文字幕免费|