我有一个场景,我需要单击选项卡并输入一些文本并返回第一个选项卡。
假设页面上有三个选项卡,我如何移动到tab2或tab3并返回到tab1。
注意:我只是谈论标签,而不是窗户。我尝试了各种findElement(webdriver)的方法,但没有运气。默认情况下,我将处于ABSENCE状态(即首次加载页面时)。我必须转到EXCEPTIONS选项卡
我使用java作为代码语言。
请参阅下面的代码(TWO HTML TABS:1)缺席2)例外)。您可以在span选项卡中查看选项卡名称。
<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>
答案 0 :(得分: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等移动到第三,第四等......
我希望这会对你有所帮助。
答案 1 :(得分: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).
答案 2 :(得分:0)
你能在标签上加一个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]");