zoukankan      html  css  js  c++  java
  • Java+selenium如何定位隐藏元素

    示例网址:https://passport.zuche.com/

    场景: 比如Login界面,输入密码的Input输入框被隐藏掉,定位到文本框运行时候提示“No such Element” ,导致脚本无法运行。

    原图:

    解决方案: 用JS去改变Style 属性, 将style="display:none"  变更为:style="display:block"

    修改Style属性后的图: 会发现多了一个输入框,可输入密码

    二、Featuer 示例:

       @E-999
        Scenario:  E-999:如何定位隐藏元素定位
        Given I login system
        Then I serach hidden Element 我的订单
        Then I select Order date range
        |开始日期     | 结束日期   |
        |2018-01-01 | @today   |
        Then I verify order information contains 还没租过车?

    三、Step 示例:

    1     @When("^I login system$")
    2     public void login_system() throws Exception{
    3         hp.navigateToLoginPage();
    4         logger.info("I log in system with name: " + Const.USER_NAME + " password: " + Const.PASSWORD);
    5         hp.login(Const.USER_NAME, Const.PASSWORD);        
    6     }

    四: 关键代码page:

    @FindBy(id="loginBt")
    private WebElement login_btn;
    
         /**
         * login EHR system
         * @param userName
         * @param pwd
         * @throws Exception
         */

    /**
    * login 神州租租车
    * @param userName
    * @param pwd
    * @throws Exception
    */
    public void login(String userName, String pwd) throws Exception {
    //获得cookie
      Set<Cookie> coo = driver.manage().getCookies();
      //打印Cookie
      logger.info(coo);
      //清除所有的缓存
      driver.manage().deleteAllCookies();
      putInValue(waitFor(By.xpath("//input[@id='normal_id']")), userName);
      String js = "document.getElementById('xpassword').style.display='block';";
      WebDriverUtils.executeJS(""+ js +"", driver);
      waitFor(By.xpath("//input[@id='xpassword']")).sendKeys(pwd);
      login_btn.click();
      Utils.waitABit(3000);
    }

    五: excuteJs封装代码

       

    1  public static Object executeJS(String code, WebDriver driver) {
    2         JavascriptExecutor executor = (JavascriptExecutor) driver;
    3         return executor.executeScript(code);
    4     }

    六: 如何解决selenium自动化中click失效问题。

      场景:明明定位到该元素,但无法操作该元素。 检查是否有动态属性元素,检查是否有引用js方法

    解决方案一: 

     String js = "var XXX = document.getElementById('XXX').click";
     WebDriverUtils.executeJS(""+ js +"", driver);

     七: 元素有onlick 属性 有 Javascripts方法。

    示例代码:

     

    WebDriverUtils.executeJS("check()", driver);
    JavascriptExecutor js = (JavascriptExecutor) driver;
    js.executeScript("check()");
  • 相关阅读:
    JPA实体类中常用的注解
    Eclipse的Project Facets属性
    java.util.HashMap的简单介绍
    java.util.Stack(栈)的简单使用
    java.util.Queue(队列)的简单使用
    如何让Spring MVC接收的参数可以转换为java对象
    解决eclipse报PermGen space异常的问题
    HTML <form> 标签的 enctype 属性
    Chrome浏览器查看cookie
    Eclipse调试时出现source not found的问题
  • 原文地址:https://www.cnblogs.com/Shanghai-vame/p/8404354.html
Copyright © 2011-2022 走看看