Selenium 学习笔记1

记录一些学习Selenium 过程中遇到的问题.

(1) 通过页面JS 是否加载完成来判断页面加载

方法1.

   

    public void waitForPageLoad(WebDriver driver, String timeout) {
            WebDriverWait wait = new WebDriverWait(driver, Long.parseLong(timeout));
            wait.until(isPageLoaded());
    }

    /**
     * wait until page load successfully.
     * @return true: page loads successfully.
     */
     protected Function<WebDriver, Boolean> isPageLoaded() {
        return new Function<WebDriver, Boolean>() {
            @Override
            public Boolean apply(WebDriver driver) {
                if(((JavascriptExecutor) driver).executeScript("return document.readyState").equals("complete")){
                    System.out.println("Page load:" + ((JavascriptExecutor) driver).executeScript("return document.readyState"));
                }
                return ((JavascriptExecutor) driver).executeScript("return document.readyState").equals("complete");
            }
        };
    }

 方法2.

if (driver instanceof JavascriptExecutor) {
      Object obj = ((JavascriptExecutor)driver).executeScript("return document.readyState");
      System.out.println(obj);
  }

 (2) 可以用Action 类来实现鼠标的模拟操作.

例如实现鼠标的悬浮(MouseOver)动作:

	public void mouseOver(WebDriver driver, String element) throws InterruptedException{
		WebElement toElement = driver.findElement(By.id(element));
		Actions action = new Actions(driver);
		action.moveToElement(toElement).bulid().perform();
		Thread.sleep(10000);
	}

 

WebDriver 实现浏览器窗口的切换. 从这里 .转载

当测试页面同时出现2个或者以上窗口时候,而且新打开的window没有name,可以使用driver.switchTo().window(winHandleID)来进行切换

//Store the current window handle  
String winHandleBefore = driver.getWindowHandle();  
          
//Switch to new window opened  
for(String winHandle : driver.getWindowHandles()){  
            System.out.println("+++" + winHandle);  
            driver.switchTo().window(winHandle);  
            }  
// Close the original window  
        driver.switchTo().window(winHandleBefore);  
        driver.close();  
          
//Switch to new window opened  
for(String winHandle : driver.getWindowHandles()){  
            System.out.println("+++" + winHandle);  
            driver.switchTo().window(winHandle);  
            }

 当最后只有一个窗口剩下的时候,应该可以直接使用
driver.switchTo().window(driver.getWindowHandle)
去选中新的窗口

 

当有两个窗口的时候, 要关闭第一个窗口保持第二个窗口开启, 可以先保存两窗口的handle. 然后再关闭.

String winHandleBefore = driver.getWindowHandle();
			System.out.println("++++" + winHandleBefore);
			for(String handle : driver.getWindowHandles()){
				System.out.println("++++ handle : " + handle);
				driver.switchTo().window(handle);
			}
String windHandleAfter = driver.getWindowHandle();		
			System.out.println("++++windHandleAfter" + windHandleAfter);
			driver.switchTo().window(winHandleBefore).close();
			driver.switchTo().window(windHandleAfter);

 或者:

	String winHandleBefore = driver.getWindowHandle();
			String windHandleAfter = null;
			System.out.println("++++" + winHandleBefore);
			baseOperation.clickAndWait(driver, suggest_product);
			for(String winHandle : driver.getWindowHandles()){
				System.out.println("++++" + winHandle);
				if(winHandle.equals(winHandleBefore)){
					continue;
				}else{
					windHandleAfter = winHandle;
					driver.switchTo().window(winHandle);
					break;
				}				
			}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值