0

我有一个场景,我需要单击一个选项卡并输入一些文本并返回到第一个选项卡。

假设页面上有三个选项卡,我如何移动到 tab2 或 tab3 并返回到 tab1。

注意:我只是在谈论标签,而不是窗口。我尝试了各种 findElement (webdriver's) 方法,但没有运气。默认情况下,我将处于缺席状态(即第一次加载页面时)。我必须移动到例外选项卡

我使用 java 作为代码语言。

请参见下面的代码(两个 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是指您将移动到会话中的第二个选项卡。
您可以通过分别给出 NUMPAD3、NUMPAD4 等...来移动到第三、第四等...。

我希望这能帮到您。

于 2013-01-18T10:32:37.973 回答
0

我有一个非常hacky的解决方案。我处于类似的情况,并通过在新窗口中打开所有选项卡,通过按住 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 回答
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 回答