2017-03-16 89 views
0

我试图使用硒的webdriver在Gmail注册的Web应用程序中提取文本从出生月份字段(一个月的名称,如一月,二月...)文本。代码如下所示:获得使用硒嵌套div标签的webdriver

<label id="month-label" class="month"> 
    <span id="BirthMonth" class=" form-error" aria-invalid="true"> 
    <div class="goog-inline-block goog-flat-menu-button jfk-select" role="listbox" style="-moz-user-select: none;" aria-expanded="false" tabindex="0" aria-haspopup="true" aria-activedescendant=":0" title="Birthday"> 
     <div class="goog-menu goog-menu-vertical" style="-moz-user-select: none; visibility: visible; left: 0px; top: -299.133px; display: none;" role="listbox" aria-haspopup="true"> 
     <div id=":1" class="goog-menuitem" role="option" style="-moz-user-select: none;"> 
      <div class="goog-menuitem-content">January</div> 
     </div> 
     <div id=":2" class="goog-menuitem" role="option" style="-moz-user-select: none;"> 
      <div class="goog-menuitem-content">February</div> 
     </div> 
     <div id=":3" class="goog-menuitem" role="option" style="-moz-user-select: none;"> 
      <div class="goog-menuitem-content">March</div> 
      </div> 
     <div id=":4" class="goog-menuitem" role="option" style="-moz-user-select: none;"> 
      <div class="goog-menuitem-content">April</div> 
     </div> 
     <div id=":5" class="goog-menuitem" role="option" style="-moz-user-select: none;"> 
     <div id=":6" class="goog-menuitem" role="option" style="-moz-user-select: none;"> 
     <div id=":7" class="goog-menuitem" role="option" style="-moz-user-select: none;"> 
     <div id=":8" class="goog-menuitem" role="option" style="-moz-user-select: none;"> 
     <div id=":9" class="goog-menuitem" role="option" style="-moz-user-select: none;"> 
     <div id=":a" class="goog-menuitem" role="option" style="-moz-user-select: none;"> 
     <div id=":b" class="goog-menuitem" role="option" style="-moz-user-select: none;"> 
     <div id=":c" class="goog-menuitem" role="option" style="-moz-user-select: none;"> 
     </div> 
    <input id="HiddenBirthMonth" name="BirthMonth" type="hidden"> 
    </span> 
</label> 

我尝试起诉xpath和其他元素定位器,但无法提取文本。当我使用Select类时,出现错误cannot apply select with div。请提出一些解决方案。

+0

分享你的代码你试过的东西 – thebadguy

+0

尝试了以下代码:Select months = new Select(driver.findbyelement(By.xpath(“// div [@class =''goog-menu goog-menu-vertical] /格“))); 列表 months_options = months.getOptions(); (i)0; i

+1

不能使用'选择()'和'div'元素,用简单的'点击()',而不是 – Andersson

回答

0

这里是你必须做的: 月份产品自举下拉。所以你必须遍历它才能得到清单。这里是工作代码:

package Gmail; 
import java.util.List; 
import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.chrome.ChromeDriver; 


public class gmailLogin { 

    public static void main(String[] args) throws InterruptedException { 


     System.setProperty("webdriver.chrome.driver", "C:\\Utility\\BrowserDrivers\\chromedriver.exe"); 
     WebDriver driver = new ChromeDriver(); 
     driver.manage().window().maximize(); 
     driver.get("http://gmail.com"); 
     driver.findElement(By.xpath(".//*[@id='link-signup']/a")).click(); 
     Thread.sleep(2000); 
     driver.findElement(By.id("BirthMonth")).click(); 
     Thread.sleep(2000); 
     List<WebElement> month_menu = driver.findElements(By.xpath(".//div[@class='goog-menuitem-content']")); 
     for (int i=0;i<month_menu.size();i++) 
     { 
      WebElement element = month_menu.get(i); 
      String contents = element.getAttribute("innerHTML"); 
      System.out.println("Values from dropdown is : "+contents); 
     } 
     driver.quit(); 

    } 

} 

让我知道这是否对你有帮助。

+0

感谢您的答复...肯定会尝试,让你知道的状态.. –

+0

@AfsarMohammed如果这个答案已经解决了您的查询请关闭话题接受答案。谢谢。 – DebanjanB

+0

谢谢Dev ..你的逻辑很简单,工作很顺利......你做了我的一天。 –