如何在selenium webdriver(java)中使用xpath从隐藏表中提取值

时间:2014-10-07 17:01:07

标签: java selenium xpath

我想从http://www.makemytrip.com/flights/的“From”下拉列表中提取值,然后将其与特定搜索字符串进行比较,以查找字符串是否存在于下拉列表中的值中。但是我无法提取值,因为这些字段是隐藏的。这是一个自动完成下拉列表。

下拉列表中的html部分

   <div class="container">
<div class="search_selector" style="display: none;">
<div class="col-xs-12">
 <div class="city_sel_top">
 <div class="top_cities_scroll" style="margin-top: -5px;">
    <ul id="near_button" class="top_cities_list" style="width: 98%;">
    <ul class="from_city_list top_cities_list" style="width: 98%; display: none;">
        <li class="top_cities_heading text-right">Top Domestic Cities</li>
        <li id="DEL|Y|New Delhi|India">
           <a class="from_city_value1" href="javascript:void(0);">New Delhi, India (DEL)</a>
                  </li>
        <li id="DEL|Y|New Delhi|India">
           <a class="from_city_value1" href="javascript:void(0);">New Delhi, India (DEL)</a>
                 </li>
        <li id="BOM|Y|Mumbai|India">
            <a class="from_city_value2" href="javascript:void(0);">Mumbai, India (BOM)</a>
                  </li>
        <li id="BLR|Y|Bangalore|India">
             <a class="from_city_value3" href="javascript:void(0);">Bangalore, India (BLR)</a>
                 </li

&GT; ......

我试过了:

WebDriver driver;
  List<WebElement> li = driver.findElements( By.xpath("//div/div[2]/ul[2]/li/a"));

这给了我一个没有这样的元素异常,因为ul [2]下的第一个li元素下面没有'a'元素。我想从第二个li元素开始获取'a'元素。

2 个答案:

答案 0 :(得分:1)

你的XPath太严格了!使用By.tagName("a")

答案 1 :(得分:0)

如果您只想要第一项的'a',那么我认为SiKing的解决方案是最好的。但是你必须使用xpath,那么我认为它应该是以下内容:

//div/div/div/div[2]/ul[2]/li[2]/a