当前位置: 首页 > 知识库问答 >
问题:

具有多个标记的Python Selenium XPATH

龙宣
2023-03-14

我有一个自动化的python脚本来检查DOM中的任何更改。我有一个有效的xpath:

//td[@class='high-bg']/a[@class='link-action'][@data-hintbox='1'][@data-hintbox-static='1'][@role='button'][@href='javascript:void(0)']

但是它给了我比我需要的更多的输出,其中一些会导致错误。所以我想从xpath中获取我需要的抽象项目,所以我尝试使用这样的东西:

//table[@id't5c711109b1eea263276674']/tbody[]/tr[]/td[@class='warning-bg']/a[@class='link-action'][@data-hintbox='1'][@data-hintbox-static='1'][@role='button'][@href='javascript:void(0)']

但它不起作用,所以甚至可以用这么多标记搜索xpath吗?

<table id="example">
    <tbody>
        <tr>
            <td class="average-bg">
                <a class="link-action" data-hintbox="1" data-hintbox-static="1" role="button"                   href="javascript:void(0)">1</a>
            </td>
        </tr>
    </tbody>
</table>

共有2个答案

扈德容
2023-03-14

它在这里。

XML

<root>
  <e1 role='a' class='y'></e1>
  <e1 role='a' class='t'></e1>
  <e1 role='a' class='z'></e1>
</root>

XAPTH

//e1[@role='a' and @class='t']

输出

Element='<e1 class="t" role="a"/>'
穆招
2023-03-14

关于您的代码试验:

>

  • 在第一次尝试中,您尝试使用元素的所有属性来构造xpath:

    //td[@class='high-bg']/a[@class='link-action'][@data-hintbox='1'][@data-hintbox-static='1'][@role='button'][@href='javascript:void(0)']
    

    具有相似属性的元素可以存在,但在不同的位置/位置。因此,它返回的输出比您需要的要多。

    在您的第二次尝试中,您构建了一个脆弱的绝对xpath:

    //table[@id't5c711109b1eea263276674']/tbody[]/tr[]/td[@class='warning-bg']/a[@class='link-action'][@data-hintbox='1'][@data-hintbox-static='1'][@role='button'][@href='javascript:void(0)']
    

    根据您提供的基于文本的HTML,要识别所需的元素,可以使用以下任一解决方案:

    >

  • xpath

    driver.find_element_by_xpath("//table[@id='example']//td[@class='average-bg']/a[@class='link-action' and text()='1']")
    

    css_selector代码:

    driver.find_element_by_css_selector("table#example td.average-bg>a.link-action")
    

  •  类似资料:
    • 问题内容: 希望这是一个非常简单的问题。我有一个makefile模式规则,如下所示: 我希望makefile生成许多.so文件,因此我尝试通过执行以下操作来使其生成两个文件(radgrd_py.so和lodiso_py.so): 然后尝试这个: 但是在每种情况下,它只会构建我指定的第一个目标。如果我运行’make radgrd_py.so’可以正常工作,我只是不确定如何指定需要构建的文件列表,这样

    • 问题内容: 我目前正在开发一个Ionic Framework(AngularJS)项目,该项目使用地理位置和Google Maps显示用户的位置。 我正在尝试向用户显示地理位置以及该区域周围的多个标记。 我的地理位置已正常运行,但似乎无法添加多个标记。 地点 控制器 问题答案:

    • 我想在每个文本之后使用jsoup提取一个文本。有没有办法选择它? 示例代码如下: 当它完成时,它会创建自动id示例id=123

    • 我想添加多个点击激活的标记和信息。我有麻烦,以显示相关的信息标记,点击后,相同的信息标记为所有标记打开。 信息来自for循环这是代码

    • 问题内容: 我已经通过import语句从Objective C(针对目标“ MyApp”)成功调用了我的Swift类: 我现在创建了一个名为“ MyAppLite”的新目标 编译新目标时,出现错误,因为代码需要“ MyApp-Swift.h”,但是编译器正在创建“ MyAppLite-Swift.h” 因此,我需要为要编译的目标创建条件Swift / ObjC标头。 怎么做,还是有更好的办法? 问