selenium 学习(4)--Xpath实例 & 常用API

上一篇 / 下一篇  2014-07-25 15:39:33

   selenium.click("//*[span='Sign in']"); //sign in 是一个类似链接的按钮

   selenium.click("link=USER & VEHICLE SETTINGS");  //是链接

   selenium.type("//input[contains(@id, 'usernameTxt')]", "Bill"); //id中包含usernameTxt

   selenium.getText("//div[@id='HistoryBox']/table/tbody/tr/td/table/tbody/tr[4]/td/span");  //从表结构的框架中获得text

 以下是测试结果是否出现了,因为结果是动态的,不好用assertTrue之类的来测试,就想出这样的一个办法。自己写代码比较,如果没有出现,就点击一个不存在的东东,从而是测试用例报错
        String NotificationDate_new;
        NotificationDate_new = selenium.getText("//div[@id='HistoryBox']/table/tbody/tr/td/table/tbody/tr[4]/td/span");
        System.out.println(NotificationDate_new);
       
        String new_Times;
        new_Times = selenium.getText("//div[@id='PageNaviArea']/p/span");
       
        String b[]=new_Times.split(" / ");
        new_Times=b[1];
       
        int n_times=Integer.parseInt(new_Times);
        System.out.println(n_times);
       
        //=======check the AC history page,verify if add a history record=====
        if (n_times==(o_times+1) && !NotificationDate_new.equals(NotificationDate_old))    //check the n_times
        {
         
         System.out.println("OK");  
        }
        else{
         selenium.click("//*[span='Bill']"); // if the values is not equal, turn
          
        }
      //=========================================

   

 

 利用java自身的时间,通过拼接获得时间
 //*********************************************  
    int y,d,m;   
    Calendar cal=Calendar.getInstance();   
    y=cal.get(Calendar.YEAR);   
    m=cal.get(Calendar.MONTH);   
    d=cal.get(Calendar.DATE);   
    String str1="0"+d+" January "+y+" 10:10" ;
    System.out.println(str1);
 //******************check timer*************************** 
    Thread.sleep(10000);
   assertTrue(selenium.isTextPresent(str1));

   

 以下是一个登录用户名/密码的验证

通过自己java自身的循环,不断登录/退出,用户名和密码在其他文件中存放着,并通过Eloginname1,Eloginname2这样的形式命名,方便在java中循环访问。

因为是多个测试用例在一起,只要有一组用户名/密码为通过测试,则说明测试用例未通过。首先用flag=1标记,如果为通过就设置为flag=0,循环运行后,如果flag=0,则让程序点击一个不存在的东东,造成用例的失败,则可以在整个用例的层面看出是否失败或成功。

其实程序不本身可能意义不大,因为我们要讲究用例的独立性,不能太复杂。这里只是记录一个思想而已。

  selenium.open(getConfigParam("loginPathName"));  // 打开登录页面
  selenium.windowMaximize();
  
  int i;
  int flag=1;
  for (i=1;i<7;i++)
  {
  
    selenium.type("//input[contains(@id, 'usernameTxt')]",getConfigParam("Eloginame"+i));
    selenium.type("//input[contains(@id, 'passwordTxt')]",getConfigParam("Epassword"+i));
    selenium.click("//*[span='Sign in']");
    Thread.sleep(3000);
    verifyTrue(selenium.isTextPresent(getConfigParam("Emessage"+i)));
    
    if (selenium.isTextPresent(getConfigParam("Emessage"+i))==false ) //||  selenium.isTextPresent(getConfigParam("Emessage1_2"))==false)
         {
           System.out.print("Fail-"+i);
           flag=0;
         
         }
       
           Thread.sleep(10000);
       if   (selenium.isTextPresent("SIGN OUT"))
        {
      //**************Logout****************
      verifyTrue(selenium.isElementPresent("//*[a='SIGN OUT']"));
         selenium.click("link=SIGN OUT");
         selenium.waitForPageToLoad("30000");
        
         selenium.click("//*[span='Yes']");
         selenium.waitForPageToLoad("30000");
         selenium.click("link=Sign in");
         selenium.waitForPageToLoad("30000");
         Thread.sleep(5000);
         }

    }
  
    if (flag == 0)
    {
     selenium.click("//*[span='Fail']"); 
    }

 

常用API

  • 文本框 

 输入信息 selenium.type("salutationText", “abc”);
 获取其中值 selenium.getValue("//input[@name='UserName']");
 是否可编辑 selenium.isEditable("//input[@name='UserName']");
  •  下拉框

 选值

 selenium.select("typeSelect", "label=Date");

selenium.select("typeSelect", "index=1"); //下标从0开始

selenium.select("typeSelect", "value=Date");

 取出已选的值 selenium.getSelectedLabel("//SELECT[@name='addSatution']")
 取出所有选项 selenium.getSelectOptions("//div[@id='mysearch_tips']/select")
  • 按钮 & 链接

 点击         selenium.click("link=Administration");
  •    单/多选框 (Radio/Check Box)

 选择 selenium.check("otherPhoneFlag")
 不选 selenium.uncheck("otherPhoneFlag");
 是否选中 selenium.isChecked("otherPhoneFlag");
  •    表格

 取出某单元格的值

(下标从0开始)

 selenium.getTable("//div[@id='profiles-search']/div[2]/table.1.1");

  •    其他

 取元素属性 selenium.getAttribute("xpath=//img[@name='picName']@style")
 取某元素的Text selenium.getText("link=Contacts")
 取当前页面的Title selenium.getText("link=Contacts")
 是否存在元素 selenium.isElementPresent(java.lang.String locator)
 是否存在text selenium.isTextPresent("abc?")
 是否可见 selenium.isVisible("xpath=//img[@name='picName']")
 模拟keyup selenium.keyUp("creditCardExpMonth",  "1");
 打开URL selenium.open("/login.aspx");
 刷新页面 selenium.refresh();
 每步操作间隔 selenium.setSpeed("3000");
 页面最大化selenium.windowMaximize();
 等待页面载入 selenium.waitForPageToLoad("30000");
 浏览器后退 selenium.goback();
  
 API 学习地址

 http://release.seleniumhq.org/selenium-core/1.0/reference.html

 http://release.seleniumhq.org/selenium-remote-control/0.9.2/doc/java/com/thoughtworks/selenium/Selenium.html


TAG:

 

评分:0

我来说两句

Open Toolbar