1

テストしようとしているテーブルがあります。列の 1 つには yes/no ラジオ ボタンがあり、ページがレンダリングされると画像の下に隠され、yes または no が選択されたときにチェック マークまたは X が表示されます。

yes が選択されている場合のラジオ ボタンの属性checked="true"

Selenium2その属性を取得して、それを比較したり、それに対してアサーションを作成したりするにはどうすればよいですか?

次のことを試してみましたが、単にヌル ポインター エラーが発生します。

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から提案された次のことも試しました。

    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);

同様のヌルポインタ例外エラーがあります。

4

1 に答える 1

2

あなたのコードは本当に意味がありません。checked非表示要素の属性を取得するには、次のようにしますelement.getAttribute()

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

WebElement randomRow = driver.findElement(By.whatever("something"));
String checkedState = (String) js.executeScript(scriptGetChecked, randomRow);
于 2013-02-02T07:43:38.487 に答える