2
<table id="rusTable" class="groupTable" cellspacing="0" cellpadding="0">
  <tbody class="ui-sortable" style="">
    <tr class="groupTop ruBorder" style="display: table-row;">
    <tr id="ru0" class="siru">
    <tr class="ruOp off">
      <td class="first"></td>
      <td colspan="3">
        <select class="ruOpSelect">
          <option></option>
          <option value="AND">AND</option>
          <option>AND NOT</option>
          <option>OR</option>
        </select>  
      </td>
      <td class="last"></td>
    </tr>
    <tr id="ru1" class="siru">
    <tr class="ruOp off">
      <td class="first"></td>
      <td colspan="3">
      <td class="last"></td>
    </tr>
    <tr id="ru2" class="siru">
    <tr class="groupBtm ruBorder" style="display: table-row;">
  </tbody>
  <tfoot>
</table>

ANDオプションを選択したい

Selenium Web ドライバー コード

actions.moveToElement(driver.findElement(By.xpath("//*@id='ruTable']/tbody/tr[3]/td[2]"))).build().perform();
waitForElement(By.xpath("(//*[@id='ruTable']//*[contains(@class,'ruOpSelect')])[1]"),30);
new Select(driver.findElement(By.xpath("(//*[@id='ruTable']//*[contains(@class,'ruOpSelect')])[1]"))).selectByVisibleText("AND");

ホバーアクションはしますが、ドロップダウンメニューから何も選択しません

エラー - By.xpath によって特定された要素の可視性を 30 秒間待機した後、タイムアウトしました:
(//*[@id='ruTable']//*[contains(@class,'ruOpSelect')])[1]

4

4 に答える 4

1

このxpathを使用してみてください。これを呼び出すだけです。

"//select[@class='ruOpSelect']/option[text()='AND']"

select私が一般的に「 」で始まるドロップダウンはxpath、次のレベルのオプションである必要があります。

于 2012-12-20T19:39:06.967 に答える
0

このような場合、非表示のドロップダウンメニューからオプションを選択すると、jsExecutorを使用します。いつも私のために働く:

String cssLocator =  "tbody.ui-sortable tr.ruOp off td select.ruOpSelect option[value="AND"]"; 
//find css locator of the needed AND element in dropdown. I use firepath (addon to firebug).
JavascriptExecutor js = (JavascriptExecutor) driver;
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append("var x = $(\'"+cssLocator+"\');");
        stringBuilder.append("x.click();");
        js.executeScript(stringBuilder.toString());

これがあなたのために働くことを願っています

于 2012-09-04T12:36:54.537 に答える
0

このコードを使用して、特定のオプションを選択できます

 IdentifyBy By;
 waitForDropDownEnable(By.xpath, "xpath");
 WebElement element = findElement(BY.xpath("xpath for the element"));
 Select select = new Select(element);
 List<WebElement> options = select.getOptions();
 String values = "";
  for(int index=0; index<options.size(); index++) {
        if(!values.equals("")) {
            values += ", ";
        }
        values += options.get(index).getText();
 }
 select.selectByVisibleText(value);

  public void waitForDropDownEnable(final IdentifyBy idBy, final String controlDesc) {
             int timeout =30 * 1000;

        final long MAX_TIME_OUT = 300000; 
        final long DELAY = 250;
        final long DEAD_LINE = System.currentTimeMillis() + MAX_TIME_OUT;
        boolean isEnabled = false;

        try {
            while(System.currentTimeMillis() <= DEAD_LINE) {
                 getWebDriver().manage().timeouts().implicitlyWait(0,TimeUnit.SECONDS);

             if(findElement(By.xpath("")).isEnabled()) {

                    isEnabled = true;
                    break;
                }

                Thread.sleep(DELAY);
            }
        } catch (WebDriverException wdex) {
            ;;
        } catch(Exception ex) {
            ;;
        }


     }
}
于 2012-08-25T05:43:28.407 に答える
0

私が使う

Thread.sleep(3000);

moveToElement アクションの後。私のために働きます。次に、要素をクリックして選択する必要があると思います。

于 2012-08-24T06:01:31.130 に答える