• selenium 学习笔记 ---新手学习记录(9) 问题总结(java)


    1.百度搜索目标--实例

    boolean flag;
    		//点击次数
    		int shcs=3;
    		int i=0;
    		 //窗口焦点控制
    		 String detailWindowHandle = null;
    		//火狐浏览器
    		System.setProperty("webdriver.firefox.bin", "D:/Softwareinstallation/huohu/firefox.exe");
    		WebDriver driver = new FirefoxDriver();
    	    driver.get("http://www.baidu.com");
    	    driver.manage().window().maximize();
    	    //获取主窗口header信息
    	    String mainWindowHandle=driver.getWindowHandle();
    	    Thread.sleep(2000);
    	    driver.findElement(By.id("kw")).sendKeys("17");
    	    driver.findElement(By.id("su")).click();
    	    Thread.sleep(3000);
    	    flag=bmm.isElementExsit(driver, By.linkText("17XUEe游戏学院首页"));
    	    System.out.println("flag="+flag);
    	    while(!flag)
    	    {
    	    	System.out.println("ssssssss");
    	    	driver.findElement(By.linkText("下一页>")).click();
    	    	Thread.sleep(2000);
    	    	flag=bmm.isElementExsit(driver, By.linkText("17XUEe游戏学院首页"));
    	    	Thread.sleep(500);
    	    	
    	    }
    	    while(i<shcs){
    	   	     //点击游戏学院
    		    driver.findElement(By.linkText("17XUEe游戏学院首页")).click();
    		    //获取新窗口焦点 切换窗口
    	   		Set<String> handles=driver.getWindowHandles();
    	   		System.out.println(handles);
    	   		Iterator<String> itWin=handles.iterator();
    	   		while(itWin.hasNext()){
    	   			String key=itWin.next();
    	   			if(mainWindowHandle.equals(key)){
    	   				continue;
    	   			  }
    	   			 detailWindowHandle=key;
    	   		    }	
    	   	    WebDriver detailWindow = driver.switchTo().window(detailWindowHandle); 
    	   	    Thread.sleep(2000);
    		    //关闭新打开的窗口
    		     detailWindow.close();
    		     handles.remove(detailWindowHandle);	 
    		     Thread.sleep(2000);
    		    //切换到主窗口
    		    driver=driver.switchTo().window(mainWindowHandle);
    		    i++;
    		    System.out.println("点击第"+i+"次");
    	    } 
    	    Thread.sleep(3000);
    	    driver.close();
    	    driver.quit();
    	}
    

     其中验证元素是否存在代码如下:

    /**
    	 * 验证元素是否存在
    	 * */
    	public boolean isElementExsit(WebDriver driver, By locator) {  
             boolean flag = false;  
             try {  
                 WebElement element=driver.findElement(locator);  
                 flag=null!=element;  
             } catch (NoSuchElementException e) {  
                 System.out.println("Element:" + locator.toString()  
                         + " is not exsit!"); 
                 flag=false;
              
             }  
             return flag;  
         } 
    

     2.截图函数

    	 /**
    	  * 页面截图,并保存到指定位置
    	  * */
    	 public  void pagePrintscreen(WebDriver driver,String paths){
    		  File screenshotfile= ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
    		  try {
    			FileUtils.copyFile(screenshotfile, new File(paths));
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	 }
    	
    

     3.截屏并保存到指定文件夹

    /**
         * 页面 截图
         * driver
         * 自定义图片存放文件夹
         * */
        public void takeScreenshot(WebDriver driver,String customtestfname){
            String screanName=String.valueOf(new Date().getTime())+".jpg";
            File dir=new File("testresult/images/"+customtestfname);
            //创建存放图片的目录
            if(!dir.exists())
                dir.mkdirs();
            String screanPath=dir.getAbsolutePath()+"/"+screanName;
            System.out.println("图片路径:"+screanPath);
            //把图片路径写入图片流        
            try {
                File scrFile=((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
                FileUtils.copyFile(scrFile,new File(screanPath));
            } catch (IOException e) {
                // TODO Auto-generated catch block
                //e.printStackTrace();
                System.out.println("screen shot error:"+screanPath);
            }
        }

    使用方法takeScreenshot(driver,"dl");

    4.::::借鉴别人的::::

    selenium 怎么处理display:none

    页面HTML是这样的:

     ....
    <div class="cf w index-middle">
    <div id="li" class="flea r li">
    <a class="pic" href="http://XXX.com/"></a>
     
    <div class="mask" style="display: none; opacity: 0.3;">
    <a href="http://XXX.com/"></a>
    </div>
    <a class="text-a" href="http://XXX.com/" style="display: none; opacity: 1;">查看</a>
    </div>
     .....
     
    处理方法是用js把隐藏的显示出来,方法如下:

    JavascriptExecutor j=(JavascriptExecutor)driver;

     j.executeScript("document.getElementById('li').style.display='block';");

     driver.findElement(By.xpath("Xpth路径")).click();

  • 相关阅读:
    [转]Python跳过第一行读取文件内容
    Batch Apex之Database.Stateful
    Package.xml文件可取得Metadata
    SFDC 关于Custom Object在Lightingアプリケーションビルダー中可以配置「Chatter」和「活動」
    SFDC 在Batch Apex中使用Aggregate SOQL统计查询语句及结果
    SFDC 为什么Label有时候在同一行,有时候换行了呢?
    SFDC String.isEmpty vs. String.isBlank
    SFDC CustomLabels vs. CustomMetadata
    SFDC Custom Object里无法设置Search Layout的解决方法
    租房注意点
  • 原文地址:https://www.cnblogs.com/kllay/p/5239031.html
Copyright © 2020-2023  润新知