0
<span id="outDuration" class="check_duration last flL" onclick="hideCalendar('#pickUpDate');">
      <label style="width:95px">
      <span class="Class-Outmatch">
             <select id="duration" class="selectBox"  tabindex="7" name="duration">
                         <option selected="selected" value="1">1</option>
                         <option value="2">2</option>
                         <option value="3">3</option>
                         <option value="4">4</option>
                         <option value="5">5</option>
                         <option value="6">6</option>
                         <option value="7">7</option>
                         <option value="8">8</option>
                         <option value="9">9</option>
            </select>
            <span class="left_part flL firefinder-match"></span>
            <span class="selectBox center_part flL selectBox-dropdown" tabindex="7">
                         <span class="selectBox-label">5</span>

セレクトボックスの値を変更できません。デフォルトでは、値 1 が選択されています。手動で 5 に変更した場合、次の HTML コードは値を 1 から 5 に変更します。

<span class="selectBox-label">5</span> 

ただし、オプション タグの属性selectedは変更されていません。select タグは非表示です。

次のコードを使用すると、例外が発生します。

Select select = driver.findElement(By.xpath("//span[@id='outDuration']/span/select")).SelectByVisibleText("5");

Exception: Element is not currently visible and so may not be interacted with
4

3 に答える 3

1

SelectByValueの代わりに使用してみましたSelectByVisibleTextか?

于 2013-01-10T07:23:06.250 に答える
0

選択タグが見えないということですが、そのため、ドライバーは、タグが表示されていないため、操作できないというエラーを表示します。

Seleniumは、ユーザーの操作をより適切にシミュレートするため、非表示の要素との操作を許可していましたが、Webドライバーは許可していませんでした。

Webドライバーでこれを実現するには、最初に選択タグをページに表示する操作を実行して選択タグを表示してから、selectbylabelを使用する必要があります。また、xpathはスパンIDを考慮しているようですが、selectタグ自体にはそれを識別するためのIDがあります。相対的な方法ではなく、selectのIDを直接使用することをお勧めします。

于 2013-01-10T08:07:00.687 に答える
0

これを使って :

Select select=new Select(Utils.driver.findElement(By.xpath("//span[@id='outDuration']//select[@id='duration']")));
select.deselectAll();
select.selectByVisibleText("5");

それでも可視性の例外が発生した場合は、 を使用する必要がありますJavaScript Executor

于 2013-01-10T12:20:41.460 に答える