2013-01-17 89 views
0

我有一個場景,我需要單擊一個選項卡並輸入一些文本並返回到第一個選項卡。如何使用selenium webdriver移動到網頁中的不同選項卡?

假設頁面上有三個標籤,我如何移動到標籤2或標籤3並返回到標籤1。

注:我只是談論選項卡,而不是窗口。我嘗試了各種findElement(webdriver's)方法,但沒有運氣。默認情況下,我將在ABSENCE(即頁面第一次加載時)。我必須移動到EXCEPTIONS選項卡

我正在使用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> 
+0

該選項卡必須包含您單擊才能訪問的鏈接或其他元素。您正在使用哪個Selenium WebDriver? – blank

+0

我正在使用webdriver 2.我已經使用了元素定位器,如:By.name,By.classname和By.ID.And幾乎我嘗試了各種元素調查結果來定位選項卡並單擊,但沒有運氣。 – MKod

+0

這是一個瀏覽器標籤或基於html的標籤在同一個網頁上? – blank

回答

0

我有一個很漂亮的解決方案。我處於類似的情況,通過在新窗口中打開所有選項卡,通過移動單擊(這是在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). 
+0

OP說「標籤」,但他並不是指瀏覽器標籤,它們是指頁面內部看起來像一個標籤的內容,所以當你正確地在窗口中打開時這不是你想要的答案 –

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]"); 
+0

你說的對於編寫html代碼的人來說是正確的在我的情況下,我不是HTML開發人員我只是測試人員,我沒有改變源碼的前提條件代碼 – MKod

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等。

我希望這會幫助你。

+0

我會試試這個,並且會發佈一個更新,謝謝 – MKod

+0

以上無法完成這項工作 – MKod

+0

它是否會拋出任何錯誤?只要確保手動快捷方式在你的包裝箱中正常工作? – Manigandan

相關問題