将所有单元格值作为字符串从表中删除

时间:2015-08-04 15:01:16

标签: java selenium selenium-webdriver

我正试图从我前一段时间构建的页面中的成员详细信息页面获取一些数据。

但是,并非所有这些页面看起来都一样。它们基本上是在后台构建表格,如果数据存在则会添加表格,否则表格不会被添加。

此外,表格没有固定的长度,如果某些字段不存在,则可以更改。

这样的tables body看起来像这样:

    <tbody><tr>
      <td style="width: 115px; vertical-align: top;">
        <img src="/Image/1231" alt="" style="width:100px;"><br>
        Hamburg<br>
        <br>
      </td>
      <td class="trenner_l" style="vertical-align: text-top;">
        <table style="width: 100%;">
          <tbody><tr>
            <td colspan="4" class="trenner_u"></td>
          </tr>
            <tr style="height: 8px;">
              <td style="vertical-align: middle;">
                  <img src="/Content/images/floasdfh_ain.png" title="memb" height="16">
&nbsp;
              </td>
              <td style="vertical-align: top;">
                vlg.&nbsp;minao
              </td>
              <td class="trenner_l">
                <a href="/memb/DetailSmall/daTB_iframe=true&amp;height=132&amp;width=420" class="thickbox" >
                  Cate1</a> (21.03.1928)
              </td>
              <td class="trenner_l" style="vertical-align: top;">
                UP,&nbsp;FORUM
              </td>
            </tr>
            <tr style="height: 8px;">
              <td style="vertical-align: middle;">
&nbsp;
              </td>
              <td style="vertical-align: top;">
                name.&nbsp;minao
              </td>
              <td class="trenner_l">
                <a href="/Verband/DetailSmall/jhkg?TB_iframe=true&amp;height=132&amp;width=420" class="thickbox" >Zone
                  1</a> 
              </td>
              <td class="trenner_l" style="vertical-align: top;">
                Z1,&nbsp;CV
              </td>
            </tr>
            <tr style="height: 8px;">
              <td style="vertical-align: middle;">
&nbsp;
              </td>
              <td style="vertical-align: top;">
                vlg.&nbsp;meno
              </td>
              <td class="trenner_l">
                <a href="/Verband/DetailSmall/asdfasd?TB_iframe=true&amp;height=132&amp;width=420" class="thickbox" >K.D.St.V.
                  Zone2</a> 
              </td>
              <td class="trenner_l" style="vertical-align: top;">
                Z1,&nbsp;Forum
              </td>
            </tr>

          <tr>
            <td colspan="4" class="trenner_o"></td>
          </tr>
            <tr>
              <td colspan="2">
                Mobiltelefon privat:&nbsp;
              </td>
              <td colspan="2" class="trenner_l">
                <a href="tel:+22341123124">+22341123124</a>
              </td>
            </tr>
            <tr>
              <td colspan="4" class="trenner_o"></td>
            </tr>
            <tr>
              <td colspan="2">email:
              </td>
              <td colspan="2" class="trenner_l">
                <a href="mailto:test.test@gmail.de">test.test@gmail.de</a>
              </td>
            </tr>
            <tr>
              <td colspan="4" class="trenner_o"></td>
            </tr>
            <tr>
              <td>
                <img src="/Content/images/icons/map.png">
              </td>
              <td style="vertical-align: top;">
                adress:&nbsp;
              </td>
              <td colspan="2" class="trenner_l" style="vertical-align: top;">
                Teststreet 2, 243423&nbsp;City, State 


              </td>
            </tr>
        </tbody></table>


        <br>
          <div class="TextSmall">online 12.04.2013</div>
      </td>
    </tr>
  </tbody>

由于我只需要data that is available,我的想法是get all the string information在这样的表格中。

我尝试了以下内容:

    for (int j = 0; j < list.size(); j++) {
        String link = list.get(i).getLinkToGVPage();
        openSite(link);
        //  
        List<WebElement> adresse = driver.findElements(By.xpath("//*[@id=\"ui-id-4\"]/table/tbody/tr/td"));
        for (int k = 0; k < adresse.size(); k++) {
            System.out.println(adresse.get(k).getText());
        }

                    WebElement adresse = driver.findElement(By.xpath("//*[@id=\"ui-id-4\"]/table/tbody/tr[6]/td"));
                    System.out.println(adresse.getText());
                } catch(Exception e) {
                    System.out.println("exceptions");
                    e.printStackTrace();
        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

然而,我什么都没得到。有关如何仅从表中获取字符串值的任何建议,以便我可以将它们保存在string variable中。

感谢您的回复!

1 个答案:

答案 0 :(得分:1)

我个人使用Python而不是Java,但一般原则对我来说似乎是一样的:我会使用if / elseif结构分别检查每个字符串,然后将找到的那些保存到变量中。

看着你的桌子,问题是这些字段似乎没有唯一的标识符,这意味着很难正确识别它们。如果您能够调整生成页面的代码(或让某人为您执行此操作),我会为您希望能够检测其自己的类的每种类型的单元格。