0

タブをクリックしてテキストを入力し、最初のタブに戻る必要があるシナリオがあります。

ページに 3 つのタブがあると仮定すると、tab2 または tab3 に移動して、tab1 に戻るにはどうすればよいですか。

注:ウィンドウではなく、タブについて話しているだけです。あらゆる種類の findElement (webdriver の) メソッドを試しましたが、うまくいきませんでした。デフォルトでは、i は ABSENCE になります (つまり、ページが最初にロードされるとき)。EXCEPTIONSタブに移動する必要があります

コード言語としてJavaを使用しています。

以下のコードを参照してください (2 つの HTML タブ: 1) 不在 2) 例外)。スパンタブにタブ名が表示されます。

<td nowrap="nowrap" align="center">
    <a accesskey="A" title="Absence" href="javascript:submitAction_RBET (document.win0,'TAB_BUTTON_ID','TIMESHEET#D');" name="TIMESHEET#D" tabindex="784">
       <span>
          <label class="PTUNDERLINE">A</label> bsence
       </span>
    </a>
</td>
<td nowrap="nowrap" align="center">
    <a accesskey="E" title="Exceptions" href="javascript:submitAction_RBET(document.win0,'TAB_BUTTON_ID','TIMESHEET#E');" name="TIMESHEET#E" tabindex="784">
       <span>
          <label class="PTUNDERLINE">E</label> xceptions
       </span>
    </a>
</td>   
4

3 に答える 3

1

以下のソリューションを使用して、タブを切り替えました。

     new Actions(driver)
    .sendKeys(driver.findElement(By.tagName("html")), Keys.CONTROL)
    .sendKeys(driver.findElement(By.tagName("html")), Keys.NUMPAD2)
    .build().perform();

上記Keys.NUMPAD2では、セッションの2番目のタブに移動することを意味します。
NUMPAD3、NUMPAD4などをそれぞれ指定することで、3番目、4番目などに移動できます。

これがお役に立てば幸いです。

于 2013-01-18T10:32:37.973 に答える
0

aタグにidを入れてもらえますか?

<a id="tab1"></a>

次に使用する

WebElement tab1 = driver.findElement(By.id("tab1"));
tab1.click();

できない場合は、他のオプションがあります。

http://selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/selenium/By.html

XPath は機能しますが、xpath 式を書くのが好きとは言えないので、css セレクターを試してみます。http://www.w3schools.com/css/css_attribute_selectors.aspを参照して ください

By.cssSelector("[title=Absence]");
于 2013-01-17T10:49:44.033 に答える
0

私はかなりハッキーな解決策を持っています。私は同様の状況にあり、Shift キーを押しながらクリックして新しいウィンドウですべてのタブを開くことで、この問題を回避しました (これは Mac 上で行われたため、プラットフォームによってショートカットが異なる場合があります)。次のようになります。

Actions builder = new Actions(driver); 
Action holdShift = builder.keyDown(Keys.SHIFT).build();
holdShift.perform();
webElement.click();

new Actions(driver).keyUp(Keys.SHIFT).build().perform();
//do something with window handles/names here (can switch between these).
于 2013-01-17T10:41:43.690 に答える