selenium 2.0処理case例(二)

8045 ワード

本文は具体的なコード処理過程を通して、seleniumの中のいくつかの比較的に常用しない種類の使い方を示します.
       1、javascript Excutorは、driverをJavascript Exectorタイプに変えることによって、executeScriptを呼び出すとjavascriptが実行されます.
       2、Takes Sreenshot、自動化テスト中、スクリーンショットは私達の直観的な位置決めミス、記録テストステップを助けることができます.webdriverのスクリーンショット機能はとても便利です.driver.getから現在スクリーンショットしたいページまで、またdriverをTakes Screnshotタイプに強く変えて、get ScrreenshotAsを呼び出します.
       3、ドラゴAndDrop、アナログドラッグ操作、actions.dragAndDropを使用する.完成します.sourceはドラッグ操作の対象です.例えば、一枚の写真など、targetは置く場所です.
       4、Select類、コンボタイプのコントロールは、Select select=new Select(driver.findElement(By.id);Selectオブジェクトを取得すると、オプションの操作ができます.例えば、「クリア項目」、「text/index/valueを通じてオプションを選択する」、「すべてのオプションを獲得する」、「現在選択されているオプションを獲得する」などの方法が提供されます.具体的には、apiを参照してください.使い方はブログ「selenium 2.0処理case例(一)」に参照してください.
以下のコードは順序に従って、上述のような具体的な使用過程とシーンをリストに示します.
package mavenSelenium;
import java.io.File;
import java.util.concurrent.TimeUnit;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxProfile;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.interactions.Actions;
import com.google.common.io.Files;

public class TestBlog extends Assert {
    WebDriver driver;
    
    @Before
    public void init(){
        driver=new FirefoxDriver();
        driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
    }
    
    @Test
    public void test()throws Exception{
        //1、driver  execute JavaScript
        driver.get("http://www.baidu.com");
        JavascriptExecutor js=(JavascriptExecutor)driver;
        String title=(String)js.executeScript("return document.title");
        System.out.println(title);
        
           //String script="function timeStamp(){ var d = new Date(); var m=d.getMonth()+1;var m=(m>9)?m:\"0\"+m; var dd=(d.getDate()>9)?d.getDate():\"0\"+d.getDate();var hh=(d.getHours()>9)?d.getHours():\"0\"+d.getHours();var mm=(d.getMinutes()>9)?d.getMinutes():\"0\"+d.getMinutes(); var ss=(d.getSeconds()>9)?d.getSeconds():\"0\"+d.getSeconds();var timeStamp=\"\"+d.getFullYear()+m+dd+hh+mm+ss; return timeStamp; }var rs;rs=timeStamp();";
        String script="var d = new Date(); var m=d.getMonth()+1;var m=(m>9)?m:\"0\"+m; var dd=(d.getDate()>9)?d.getDate():\"0\"+d.getDate();     var hh=(d.getHours()>9)?d.getHours():\"0\"+d.getHours(); var mm=(d.getMinutes()>9)?d.getMinutes():\"0\"+d.getMinutes(); var ss=(d.getSeconds()>9)?d.getSeconds():\"0\"+d.getSeconds();var timeStamp=\"\"+d.getFullYear()+m+dd+hh+mm+ss; return timeStamp;";
        System.out.println(script);
        String timestamps=(String)js.executeScript(script);
        System.out.println(timestamps);
        
        //2、TakesScreenshot
        File srcFile=((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
        String descFilePath="d:\\test2.jpeg";
        Files.copy(srcFile, new File(descFilePath));
        File descFile=new File(descFilePath);
        assertTrue(descFile.exists());
        
        //3、Drag And Drop
        driver.get("https://www.casa.com/login.qs?returnurl=/StyleBoard/Detail.qs?StyleBoardId=9468");
        driver.findElement(By.id("emailTextBox")).sendKeys("[email protected]");
        driver.findElement(By.id("PwdTextBox_Security")).sendKeys("abc123");
        driver.findElement(By.id("SignInButton")).click();
        Thread.sleep(2000);
        WebElement source1=driver.findElement(By.xpath("//div[@id='SBProductBox1']/div/a/img"));
        WebElement target1=driver.findElement(By.xpath("//div[contains(@class,'SBDrag') and child::div[@id='SBProductBox2']]"));
        Actions actions=new Actions(driver);
        actions.dragAndDrop(source1, target1).perform();
        Thread.sleep(2000);
        WebElement source2=driver.findElement(By.xpath("//div[@id='SBProductBox2']/div/a/img"));
        WebElement target2=driver.findElement(By.xpath("//div[contains(@class,'SBDrag') and child::div[@id='SBProductBox1']]"));
        actions.dragAndDrop(source2, target2).perform();        
    }
    public void tearDown(){
        driver.quit();
    }

}
 
dragAndDrop ToObject(locatofObject ToBeDragged、locatofDragDestination Object)
dragAndDrop(locator,movements String) //movements String-offset in pixels from the current location to which the element shuld be moved,e.g.「+70、-300」
 
dragAndDrop(Point,Point)//Point point=driver.findElement(locator).get Location()  get(x,y)