Selenium元素的处理-鼠标事件|弹窗的处理|页面切换

1:鼠标相关操作


1.1:鼠标左击

public class testDemos {
	
	private FirefoxDriver driver;
	
	@Test
	public void testDemo() throws Exception{
		
		driver = new FirefoxDriver();
		
		driver.get("https://www.imooc.com/");
		
		driver.manage().window().maximize();
		
		WebElement element = driver.findElement(By.id("js-signin-btn"));
		//创建鼠标事件的action对象
		Actions actions = new Actions(driver);
		//click(WebElement element)为鼠标左击事件
		actions.click(element).perform();

	}
}

1.2:鼠标右击

public class testDemos {
	
	private FirefoxDriver driver;
	
	@Test
	public void testDemo() throws Exception{
		
		driver = new FirefoxDriver();
		
		driver.get("https://www.imooc.com/");
		
		driver.manage().window().maximize();
		
		WebElement element = driver.findElement(By.id("js-signin-btn"));
		//创建鼠标事件的action对象
		Actions actions = new Actions(driver);
		//contextClick(WebElement element)为鼠标右击事件
		actions.contextClick(element).perform();

	}
}

1.3:鼠标双击事件

public class testDemos {
	
	private FirefoxDriver driver;
	
	@Test
	public void testDemo() throws Exception{
		
		driver = new FirefoxDriver();
		
		driver.get("https://www.imooc.com/");
		
		driver.manage().window().maximize();
		
		WebElement element = driver.findElement(By.id("js-signin-btn"));
		//创建鼠标事件的action对象
		Actions actions = new Actions(driver);
		//doubleClick(WebElement element)为鼠标双击事件
		actions.doubleClick(element).perform();

	}
}

1.4:鼠标悬停事件

public class testDemos {
	
	private FirefoxDriver driver;
	
	@Test
	public void testDemo() throws Exception{
		
		driver = new FirefoxDriver();
		
		driver.get("https://www.imooc.com/");
		
		driver.manage().window().maximize();
		
		WebElement element = driver.findElement(By.xpath(".//*[@id='main']/div[2]/div/div[9]/div[1]/a/span"));
		//创建鼠标事件的action对象
		Actions actions = new Actions(driver);
		//moveToElement(WebElement element)为鼠标悬停事件
		actions.moveToElement(element).perform();
		//悬停后寻找linkText为以太坊的元素进行点击操作
		driver.findElement(By.linkText("以太坊")).click();

	}
}

2:弹窗的操作

2.1:确认取消对话框的操作

2.1.1:模拟键盘的操作确认或者取消对话框

public class AddGroup {
	
	//此处driver必须传递上一次的driver 顺序执行
	public void addGroup(WebDriver driver) throws Exception{
		
		Thread.sleep(3000);
		//切放到第一个iframe
		driver.switchTo().frame("iframe_page");
		Thread.sleep(3000);
		//切换到第二个iframe
		driver.switchTo().frame("iframe_vehicle");
		//定位添加车组 进行选中
		driver.findElement(By.xpath(".//*[@id='div_tab']/div[1]/div[3]/ul/li[1]/a/span[1]")).click();
		
		driver.findElement(By.xpath(".//*[@id='form_group']/div[1]/div[1]/span/input[1]")).sendKeys("TEST");
		
		Thread.sleep(3000);
		
		driver.findElement(By.xpath(".//*[@id='div_tab']/div[2]/div[1]/div/div[2]/div[2]/div/a/span/span[1]")).click();
		
		Thread.sleep(3000);
		
		//对于按键盘的某个键就可以进行确定 或者取消的对话框可以采取下列操作
		Robot robot = new Robot();//在基本屏幕坐标系中构造一个 Robot 对象
                robot.keyPress(KeyEvent.VK_ENTER);//按下给定的键
//                robot.keyPress(KeyEvent.VK_ESCAPE);//按下给定的键
                robot.keyRelease(KeyEvent.VK_ENTER);//释放该键
//                robot.keyRelease(KeyEvent.VK_ESCAPE);//释放该键
	}

}

2.1.2:Alert操作弹窗

public class AddGroup {
	
	//此处driver必须传递上一次的driver 顺序执行
	public void addGroup(WebDriver driver) throws Exception{
		
		Thread.sleep(3000);
		//切放到第一个iframe
		driver.switchTo().frame("iframe_page");
		Thread.sleep(3000);
		//切换到第二个iframe
		driver.switchTo().frame("iframe_vehicle");
		//定位添加车组 进行选中
		driver.findElement(By.xpath(".//*[@id='div_tab']/div[1]/div[3]/ul/li[1]/a/span[1]")).click();
		
		driver.findElement(By.xpath(".//*[@id='form_group']/div[1]/div[1]/span/input[1]")).sendKeys("TEST");
		
		Thread.sleep(3000);
		
		driver.findElement(By.xpath(".//*[@id='div_tab']/div[2]/div[1]/div/div[2]/div[2]/div/a/span/span[1]")).click();
		
		Thread.sleep(3000);
		//相当于点击确定
		driver.switchTo().alert().accept();
		//相当于点击取消
//		driver.switchTo().alert().dismiss();
		//在对话框中输入内容
//		driver.switchTo().alert().sendKeys("1234");
	}

}

3:窗口的切换

public class Test1 {
	private static WebDriver driver;

	public static void main(String[] args) throws Exception {  
        
		File pathToFirefoxBinary = new File("D:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe");
		FirefoxBinary firefoxbin = new FirefoxBinary(pathToFirefoxBinary);

		driver = new FirefoxDriver(firefoxbin, null); 
     
        driver.manage().window().maximize();  
       
        driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
          
        driver.get("https://www.jd.com/");  
       
        Thread.sleep(1000);
        
        //点击京东左侧菜单中的 手机
        WebElement phone_link = driver.findElement(By.linkText("手机"));
        phone_link.click();
        Thread.sleep(1000);
    
        // 获取当前页面句柄  
        String handle = driver.getWindowHandle();  
        //获取所有页面的句柄的集合
        Set<String> windowHandles = driver.getWindowHandles();
        // 获取所有页面的句柄,并循环判断不是当前的句柄 
        for (String handles : windowHandles) {  
            if (handles.equals(handle)){ 
                continue;  
            }
            //切换到另外一个页面
            driver.switchTo().window(handles);  
        }  
        
        WebElement xiaomi_link = driver.findElement(By.linkText("小米"));
        xiaomi_link.click();
        Thread.sleep(1000);
       
    }  
}

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值