2016-01-20 44 views
0

未选中的方框的一部分处理,其中选择状态被存储为类值

<input data-track-event="my_account" data-track-action="newsletter-unselect" data-track-data="Page[My Account]|<-vertical->|<-horizontal->|<-rel_vertical->|<-rel_horizontal->|Newsletters|Business - checkbox|Pos[3:8]|" type="checkbox" name="newsletters[]" id="f-newsletters-business" value="business" class="tick-a"> 

checkedBox

<input data-track-event="my_account" data-track-action="newsletter-unselect" data-track-data="Page[My Account]|<-vertical->|<-horizontal->|<-rel_vertical->|<-rel_horizontal->|Newsletters|Style - checkbox|Pos[5:8]|" type="checkbox" name="newsletters[]" id="f-newsletters-independent_woman" value="independent_woman" class="tick-a" checked=""> 

我的代码复选框

public void checkboxIsSelected(By by, String text) { 
    try { 
     String checkBoxClass = driver.findElement(by).getAttribute("class");    

     if (checkBoxClass.contains("tick-a checked")) { 
      log.log("CheckBox is already selected.... Move On.");           
     } 
    } catch (Exception e) { 
     log.log("CheckBox NOT checked... Pls Select to avail of: " + text); 
     driver.findElement(by).click(); 
     log.log("CheckBox selected..... continue.");  
    } 
} 

请我需要检查复选框是否选中或不选中。基于我所做的研究,我发现有一些常见的Web应用程序jQueries非常类似于JavaScript库,其中选择状态作为类值的一部分存储......因此很难使用isSelected( )。尝试了所有可能的努力,但它的方法不是检查已经复选框还是抛出错误。 AM使用getAttribute()来获取类,并检查它是否包含定义的文本,但你可以看到,班里有一个预定义的文本(打勾-A)和变化((蜱一)检查)时,盒子检查。这是困难的一点。 将感激所提供的帮助。也检查了相关的主题,但没有任何帮助。

回答

0

我不是很确定你在这里的意思,但看着你的未经检查和检查的代码片段,'检查'类没有被添加,class="tick-a"。所以checkBoxClass.contains("tick-a checked")永远不会是真的。

+0

TANX响应。也许我做错了。 ABove是JavaScript片段。很明显,isSelected不会用于复选框,因为该值只能作为类值的一部分存储。现在的问题是,如何检查复选框是否被选中。而不是写一个别的东西,我把这部分添加到catch中。我应该删除try ctach并添加其他语句吗? – Joe

+0

**改进型Code **'公共无效checkboxIsSelected(通过用,字符串文本)抛出异常{\t \t \t \t \t \t \t 布尔\t = isCheck driver.findElement(通过).isSelected(); \t \t \t如果(isCheck!){ \t \t \t \t log.log( “复选框未选中...请选择援用:” +文字); \t \t \t \t的Thread.sleep(2000); \t \t \t \t driver.findElement(通过)。单击(); \t \t \t \t log.log(“复选框选中.....继续。“); \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t}否则 \t \t \t { \t \t \t \t log.log(” 复选框已被选中....前进。 “); \t \t \t} \t \t \t}'**但是这段代码选择了未选中的复选框并取消选中已经选中的复选框。** – Joe

0

只是一个快速更新....想通解掉自己。在对javascript进行了适当的观察后,我发现我指向了错误的元素。下面的代码。

public void checkboxIsSelected(By by, String text) { 

     try { 
      if (!driver.findElement(by).isSelected()) {     
       log.log("CheckBox NOT checked... Pls Select to avail of: " + text); 
       JavascriptExecutor jse = (JavascriptExecutor)driver; 
       jse.executeScript("arguments[0].click()", driver.findElement(by)); 
       log.log("checkBox clicked..... Move On."); 
       Thread.sleep(3000); 
       //driver.findElement(by).click(); 
      }else 
      { 
       log.log("CheckBox is ALREADY selected.... Move On.");     
      } 
     } catch (Exception e) { 

     } 
    } 

TANX