• Java Selenium


    四,弹出框

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

    (其实这也不是常规的弹出框,二是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);
            }    
        }
        
    }
  • 相关阅读:
    浅谈服务端渲染
    vuex数据持久化
    vuex中的命名空间
    如果在项目中使用阿里图标库
    vue中的插槽
    webpack相关以及搭建react环境
    数组的reduce方法
    再也不用等后端的接口就可以调试了Json-server
    react中如何使用swiper
    解决vue中组件库vant等ui组件库的移动端适配问题
  • 原文地址:https://www.cnblogs.com/AryaZ/p/7679357.html
Copyright © 2020-2023  润新知