0

「実際の」チェックボックスではないチェックボックスがあります。CSSは次のようになります。

<li id="privileges:1" class="ui-tree-parent default" data-rowkey="1">
   <div class="ui-tree-node ui-state-default" aria-checked="true" aria-selected="true" aria-expanded="true" role="treeitem">
      <span class="ui-helper-clearfix ui-tree-node-content ui-corner-all ui-tree-selectable-node">
         <span class="ui-tree-icon ui-icon ui-icon-triangle-1-s"></span>
         <span></span>
         <div class="ui-tree-checkbox ui-widget">
            <div class="ui-tree-checkbox-box ui-widget ui-corner-all ui-state-default">
               <span class="ui-tree-checkbox-icon ui-icon ui-icon-check"></span>

チェックボックスをオンにすると、最後のスパンが表示されます。

私の同僚は次のコードを持っていましたが、レビューの結果、黒魔術のように見え、何も検証するべきではありません。

WebElement checkedBox = findElementByXpath("//li[@id='privileges:1']/div[@aria-checked='true']/span/div/div");
@SuppressWarnings("unused")
Boolean isChecked;
isChecked = checkedBox.findElement(By.xpath("//li[@id='privileges:1']/div[@aria-checked='true']/span/div/div")).isSelected();

Selenium2 / Webdriverを使用してチェックボックスがオンになっていることを検証する最良の方法は何ですか?

これは動作しません:

WebElement checkedBox = findElementByClass("//li[@id='privileges:1']/div/span/div/div/span[@class='ui-tree-checkbox-icon.ui-icon.ui-icon-check']");
assertTrue(checkedBox.isEnabled());

また、次のことも行いません。

WebElement checkedBox = findElementByClass("//li[@id='privileges:1']/div/span/div/div/span[@class='ui-tree-checkbox-icon.ui-icon.ui-icon-check']");
assertTrue(checkedBox.isDisplayed());
4

1 に答える 1

1

スペースがXPathにあるはずのピリオド/フルストップがあります。

ピリオド/ピリオドはCSSセレクターでのみ機能します。また、By ClassName関数を使用していて、XPathクエリを渡しているようです。これは単なるタイプミスだったと思います。

これはあなたが持っているものです:

//li[@id='privileges:1']/div/span/div/div/span[@class='ui-tree-checkbox-icon.ui-icon.ui-icon-check']

そのはず:

//li[@id='privileges:1']/div/span/div/div/span[@class='ui-tree-checkbox-icon ui-icon ui-icon-check']

知らなかった場合のヒント:Chromeデベロッパーツールを開いた場合は、コンソールに直接移動して、次のように入力します。

$x("//li[@id='privileges:1']/div/span/div/div/span[@class='ui-tree-checkbox-icon.ui-icon.ui-icon-check']")

何も返されないことがわかります。

これでも同じことをします:

$x("//li[@id='privileges:1']/div/span/div/div/span[@class='ui-tree-checkbox-icon ui-icon ui-icon-check']")

何かを返します。FirebugツールとChromeDeveloperツールの両方を使用して、CSSセレクターXPathセレクターを実行できます。したがって、問題がSeleniumにあるのか、使用しているセレクターにあるのかを確認できます。

于 2012-09-12T20:20:29.370 に答える