0

これは私には意味がありません。操作しようとしているページ要素のソース コードは次のとおりです。

<li>
    <input type="checkbox" name="includeStudents" value="true" checked />
     <span style="cursor: pointer;"
          onclick="javascript:checkBoxSingleClick(document.userSearchForm.includeStudents);"
          ondblclick="javascript:userTypeDoubleClick(document.userSearchForm, document.userSearchForm.includeStudents);">
     <strong><u>S</u>tudent</strong>
       </span>
 </li>

By.name を使用して要素を検索しようとすると、要素が表示されないというエラーが表示されますが、By.xpath を使用して同じ要素を検索しようとすると、すべて正常に動作します。これが私のテストのコードです。

wait.until(ExpectedConditions.visibilityOfElementLocated(By.name("includeStudents")));
    driver.findElement(By.name("includeStudents")).click();
    //driver.findElement(By.xpath("//*[@id='ed-userSearchCheckboxUserTypeFilter']/li[2]/input")).click();

タイミングの問題だけではないことを確認するために、待機を追加しました。by.name を使用すると、要素の可視性を待っているときにタイムアウト エラーが発生します。

ここで何が欠けていますか?

4

1 に答える 1

2

私はここで完全に外れているかもしれませんが、その要素が webdrivers インスタンスの親にないかどうかを確認しましたか? たとえば、まだステップインしていないフレーム内にコードがある場合、Xpath を見つけることができません。要素が存在しないというエラーがスローされ、x 秒後に webdriver がタイムアウトします。

driver.switchTo().frame("MyElementFrame");    
driver.findElement(By.xpath("//*[@id='ed-userSearchCheckboxUserTypeFilter']/li[2]/input")).click();
于 2013-08-14T16:12:15.807 に答える