2015-06-01 3 views
2

Пытается автоматизировать наше внутреннее веб-приложение с использованием Java и Selenium WebDriver.Обработка вкладок jquery в Selenium WebDriver

На одной из страниц приложение использует jquery ui tabs и HTML для одного и того же.

<div id="tabs" class="addressSelectionTabs ui-tabs ui-widget ui-widget-content ui-corner-all"> 
    <div id="verticalTabs" style=""> 
    <ul class="addressSelectionUl ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all"> 
     <li class="ui-state-default ui-corner-top"> 
      <a href="#Telephony">Landline 1</a> 
     </li> 
     <li class="ui-state-default ui-corner-top ui-tabs-selected ui-state-active"> 
      <a href="#TelephonyFeatures">Landline 2</a> 
     </li> 
     <li class="ui-state-default ui-corner-top"> 
      <a href="#Other">Others</a> 
     </li> 
    </ul> 
    </div> 

Попытка прочитать элементы, присутствующие во всех этих 3 вкладках; но способный находить элементы только на активной вкладке и не в состоянии переключиться на остальные вкладки.

Может кто-нибудь помочь мне переключить другие вкладки, пожалуйста.

Ниже приведен код, который используется до сих пор:

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 

      driver.findElement(By.linkText("Landline 1")).click(); 

      List<WebElement> ll1 = driver.findElements(By 
        .xpath("//img[contains(@src,'/cmc/images/treeview/folder-closed.gif')]")); 
      for (int i = 0; i < llf1.size(); i++) 
      { 
       llf1.get(i).click(); 
      } 

driver.findElement(By.linkText("Landline 2")).click(); 

      List<WebElement> ll2 = driver.findElements(By 
        .xpath("//img[contains(@src,'/cmc/images/treeview/folder-closed.gif')]")); 
      for (int i = 0; i < llf1.size(); i++) 
      { 
       llf1.get(i).click(); 
      } 


      driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 

      driver.findElement(By.linkText("Others")).click(); 

      List<WebElement> discount = driver.findElements(By 
        .xpath("//img[contains(@src,'/cmc/images/treeview/folder-closed.gif')]")); 
      for (int i = 0; i < discount.size(); i++) 
      { 
       discount.get(i).click(); 
      } 

Спасибо!

+0

Что происходит после нажатия? Не переключает фокус? – Saifur

+0

по-прежнему остается на первой активной вкладке (Landline 1) - эта вкладка активна со страницы загружается .. –

ответ

0

Я знаю, что это старый пост, но вы считали, что используете Xpaths? Я работаю над подобным набором тестов, и у меня нет проблем с переходом между вкладками и нажатиями элементов на разных вкладках. Очевидно, вы не можете щелкнуть элемент на вкладке, пока эта вкладка не станет активной, нажав на нее.

Таким образом, вы можете попробовать что-то вроде переключения между вкладками:

driver.findElement(By.Xpath("//a[@href='#Telephony']")).Click(); 
driver.findElement(By.Xpath("//a[@href='#TelephonyFeatures']")).Click(); 

Кроме того, с помощью XPaths вы можете использовать Firebug/FirePath в Firefox, чтобы проверить, что ваша работа XPaths.

Еще один момент, который следует отметить, заключается в том, что я использую страницу Selenium PageFactory для моделирования моих страниц, а затем для написания отдельных тестов, которые взаимодействуют с объектами страницы.

PageObject будет отображать элементы, как это:

[FindsBy(How = How.Xpath, Using = "//a[@href='#Telephony']"] private IWebElement TelephonyTab; 

И будет включать в себя метод щелчка, такие как:

public IWebElement ClickTelephonyTab() 
{ 
    TelephonyTab.Click(); 
    return TelephonyTab; 
} 

Таким образом, чтобы переключить вкладки в ваших тестов вы можете просто сделать:

YourPage.ClickTelephonyTab();