VBA + selenium为XPath找到元素CSS替代品

时间:2015-12-21 19:51:42

标签: vba selenium xpath

我对硒很新,但我越来越好......:)

我正在制作一个从网站中提取数据并将其保存在Excel表格中的刮刀。

网站的结构很糟糕,根本没有id,所有的类都是相同的,除了类之外,使用的标签和属性也很少。 该网站充满了表格,我只需要一个特定的信息  表。很难找到它,因为表格的顺序每天都在变化。

网站的结构如下所示:

DLLInitialized

当然还有许多其他表格,我不需要这些数据,但它们的结构看起来完全一样。

所以我只需要一张表中的数据。我收集相关数据的方法是搜索我需要的字符串("我需要这个")然后退回几个节点然后再次进入tbody部分,我最终可以获得&# 34; bla bla"文本。 我在VBA和Selenium的XPath的帮助下这样做。 这是我的代码:

<div class="table">
    <table cellspacing="0" cellpadding="0" border="0">
        <thead>
            <tr>
                <th colspan="4">
                    <strong>I NEED the bla bla from this table!</strong>
        <tbody>
            <tr class="even">
                <td>01</td>
                <td>bla bla</td>
                <td>bla bla</td>
            <tr class="odd">
                <td>02</td>
                <td>bla bla</td>
                <td>bla bla</td>

        </tbody>

    </table>
</div>

<div class="table">
    <table cellspacing="0" cellpadding="0" border="0">
        <thead>
            <tr>
                <th colspan="4">
                    <strong>I DON'T need this!</strong>
        <tbody>
            <tr class="even">
                <td>01</td>
                <td>bla bla</td>
                <td>bla bla</td>
            <tr class="odd">
                <td>02</td>
                <td>bla bla</td>
                <td>bla bla</td>

        </tbody>

    </table>
</div>

我有两个问题: 1)有没有办法用driver.FindElementByCss()命令获得相同的结果? 2)正如你在我的Xpath命令中看到的,我需要输入确切的文本,有没有办法使用&#39; contains&#39;命令? (我无法使它工作:()

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

这个Xpath找到了一个以“我需要”开头的表,并在第一个之后获得了所有td

//table[.//th/strong[starts-with(.,"I NEED")]]/tbody/tr/td[position()>1]

结果

Element='<td>bla bla</td>'
Element='<td>bla bla</td>'
Element='<td>bla bla</td>'
Element='<td>bla bla</td>'