【问题标题】:VBA + selenium find elements CSS alternative for XPathVBA + selenium 查找元素 CSS 替代 XPath
【发布时间】:2015-12-22 05:09:34
【问题描述】:

我对 selenium 还很陌生,但我越来越好...:)

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

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

网站的结构如下所示:

<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>

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

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

Set my_Element = driver.FindElementsByXPath("(//th[strong='My text'])[1]/../../../tbody/tr[1]/td[2]")

我有两个问题: 1)有什么方法可以使用 driver.FindElementByCss() 命令获得相同的结果? 2) 正如您在我的 Xpath 命令中看到的,我需要输入确切的文本,有什么方法可以使用“包含”命令吗? (我无法让它工作:()

提前感谢您的帮助!

【问题讨论】:

    标签: vba selenium xpath


    【解决方案1】:

    此 Xpath 查找以“I NEED”开头的 th 表并获取第一个之后的所有 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>'
    

    【讨论】:

    • 亲爱的 Spalsh58!感谢你的回复!您的解决方案确实比我的代码更实用。但是在帖子中,我要求使用 CSS 选择器替代方案(而不是 Xpath)。谢谢!
    • 我回答了第 2 点 :)
    • :) 是的,这是真的! :) 谢谢!
    猜你喜欢
    • 1970-01-01
    • 2021-03-31
    • 1970-01-01
    • 1970-01-01
    • 2016-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-21
    相关资源
    最近更新 更多