代码改变世界

Java Selenium - 元素操作 (四)

2017-10-16 22:51  鸣仁  阅读(494)  评论(0编辑  收藏  举报

四,弹出框

京东购物车为例 , 点击‘删除’ 或者‘移到我的关注’ ,就会弹出下面这个框框,练吧:

(其实这也不是常规的弹出框,二是div css前端技术做的效果,本想做个Alert的案例,实在不好找例子)

真正的Alert ,不能用常规页面元素方法定位到,可以用以下办法处理:几种弹出框的处理办法

Alert alert = driver.switchTo().alert();
alert.accept(); //确定
alert.dismiss(); //取消
alert.getText(); //获取弹框内容

------------------------------------------------------------

下面是今天案例的思路

1.首页点击购物车

2.要求登录,输入用户名&密码

3. 找到第一个商品

4.移动到购物车

 

package TestCases;

import java.awt.AWTException;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.concurrent.TimeUnit;

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

public class SeleniumAction_CheckBox {
    private static WebDriver driver;
    private static String baseUrl;

    public static void main(String[] args) throws AWTException {
        driver=new ChromeDriver();
        baseUrl="https://www.jd.com";
        driver.get(baseUrl);
        driver.findElement(By.linkText("我的购物车")).click();

        //System.out.println(currentWindow);
        // 得到所有窗口的句柄
        String windowHandle1 = GetCurrentWindowHandle(driver);
        SwitchWindowHand(windowHandle1);
        System.out.println(windowHandle1);
        
        driver.findElement(By.linkText("登录")).click();
        
        driver.switchTo().frame("dialogIframe");
        driver.findElement(By.linkText("账户登录")).click();
        driver.findElement(By.id("loginname")).sendKeys("**********");//输入京东用户名
        driver.findElement(By.id("nloginpwd")).sendKeys("***********");//输入密码
        driver.findElement(By.id("loginsubmit")).click();
        driver.switchTo().defaultContent();
        
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        
      List<WebElement> list = driver.findElements(By.xpath("//div[@class='item-form']//a[2]"));
//        System.out.println(list.size());
//        for(WebElement E:list){
//            System.out.println(E.getText());
//        }
        System.out.println(list.get(2).getText());
        list.get(2).click();

        driver.findElement(By.linkText("确定")).click();
    }
    
    public static String GetCurrentWindowHandle(WebDriver dr){
        return dr.getWindowHandle();
    }
    
    public static void SwitchWindowHand(String currentWindow) {
        Set<String> handles = driver.getWindowHandles();
        Iterator<String> it = handles.iterator();
        while (it.hasNext()) {
        String handle = it.next();
        if (currentWindow.equals(handle))
            continue; //跳出当前循环
            WebDriver window = driver.switchTo().window(handle);
        }    
    }
    
}