2013-02-01 2 views
1

테스트 할 테이블이 있습니다. 열 중 하나 안에 예/아니오 라디오 버튼이 있습니다. 페이지가 렌더링 될 때 이미지 아래에 숨겨 지므로 예 또는 아니요가 선택되면 체크 표시 또는 X가 표시됩니다.숨겨진 요소의 특성 가져 오기

예가 선택되면 라디오 버튼의 속성이 checked="true"입니다.

Selenium2과 비교하여 해당 특성을 비교하거나 비교할 수 있습니까?

나는 간단히 널 포인터 오류가 발생하는 다음을 시도했다.

WebElement randomRow = driver.findElement(By.xpath("/html/body/div/div/div/div/form/div/div[2]/div/div[2]/div/div/div/div/div/div/div/table/tbody/tr["+rowNum+"]/td/div/div/input")); 
    String poEligibleChecked = randomRow.getAttribute("checked"); 
    String element = js.executeScript("return arguments[0].getText();", poEligibleChecked).toString(); 
    System.out.println(element); 

유사한 널 포인터 예외 오류로 :

private void verifyPOEligibleYesNull(String driverName) 
{ 
    int min = 1; 
    int max = 6; 
    JavascriptExecutor js = (JavascriptExecutor)driver; 
    StringBuilder stringBuilder = new StringBuilder(); 
    //Navigate to System Facing 
    driver = browser.getDriver(driverName); 
    driver.manage().window().maximize(); 
    driver.navigate().to("http://theURL"); 

    //Enter userName 
    WebElement userName = driver.findElement(By.id("username")); 
    userName.clear(); 
    userName.sendKeys(user); 

    //Enter Password 
    WebElement password = driver.findElement(By.id("pword")); 
    password.clear(); 
    password.sendKeys(pwd); 

    //Click Login 
    WebElement loginBtn = driver.findElement(By.xpath("/html/body/div/div/form/div[3]/div/input")); 
    loginBtn.click(); 
    try 
    { 
     Thread.sleep(5000); 
    } 
    catch (InterruptedException e) 
    { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    WebElement ivToPoBtn = driver.findElement(By.xpath("/html/body/div/div/div/ul/li/a/img")); 
    ivToPoBtn.click(); 
    try 
    { 
     Thread.sleep(5000); 
    } 
    catch (InterruptedException e) 
    { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    //Grab a random row and determine whether the PO Eligible is "Yes" 
    String rowNum = Integer.toString(rand.nextInt(max - min + 1) + min); 
    WebElement randomRow = driver.findElement(By.xpath("/html/body/div/div/div/div/form/div/div[2]/div/div[2]/div/div/div/div/div/div/div/table/tbody/tr["+rowNum+"]/td/div/div/input")); 
    String poEligibleChecked = randomRow.getAttribute("checked").toString(); 
    stringBuilder.append("var x = $(\""+poEligibleChecked+"\");"); 
    stringBuilder.append("return x.toString();"); 
    String res = (String) js.executeScript(stringBuilder.toString()); 
    System.out.println(res);  
} 

이 난 WebDriver FAQ에서 제안 된 다음 시도했다.

답변

2

코드가 실제로 이해가되지 않습니다. 눈에 보이지 않는 요소의 checked 속성을 얻기 위해서는, 단순히 element.getAttribute()를 사용 : 당신이 위의 무엇을하려고 할 때 나는 여전히`NullPointerException`을 얻고있다

final String scriptGetChecked = "return arguments[0].getAttribute('checked')"; 

WebElement randomRow = driver.findElement(By.whatever("something")); 
String checkedState = (String) js.executeScript(scriptGetChecked, randomRow); 
+0

. 예외를 얻으려는 줄은 마지막으로 JavaScriptExecutor를 실행하는 곳입니다. – DarthOpto

+1

이것이 도움이되었습니다. 도움을 주셔서 감사합니다. – DarthOpto