【问题标题】:Specifying multiple conditions in xpath在 xpath 中指定多个条件
【发布时间】:2015-02-15 18:31:46
【问题描述】:

我想选择所有带有 <td class='blob-code blob-code-addition'> and <td class='blob-code blob-code-deletion'> 的标签。所以我试图在两个谓词之间包含or 条件。这没用。但是,如果我只包含两个类中的一个,它就可以工作。这里有什么问题?语法有问题。

By getChanges = By.xpath("//td[@class='blob-code blob-code-addition'] or  //td[@class='blob-code blob-code-deletion']");

【问题讨论】:

    标签: java selenium xpath selenium-webdriver web-scraping


    【解决方案1】:

    你想像下面这样指定:

    //td[contains(@class,'deletion') or contains(@class,'addition')]
    

    //td[contains(@class,'blob-code blob-code-addition') or contains(@class,'blob-code blob-code-deletion')]
    

    如果您想进行tag 独立搜索,那么您可以简单地使用

    //*[contains(@class,'blob-code blob-code-addition') or contains(@class,'blob-code blob-code-deletion')]
    

    从您的回答看来,您正在尝试连接两个不同的xpaths

    但是,contians() 在此处不是强制性的。你也可以不用这个

    //*[(@class='blob-code blob-code-addition') or (@class='blob-code blob-code-deletion')]
    

    【讨论】:

    • 所以不能直接用“or”?它必须与包含一起使用?
    • @Zack 你可以,但不能以// 开头。我也在使用or。请查看我的编辑。
    • 是的。但是在所有三个解决方案中,您都使用了“包含”。有效。我只是好奇为什么没有包含它就不能工作。
    【解决方案2】:

    对我有用的是下面的表达式使用“|”我的表情中的角色-

    按元素 = driver.findElement(By.xpath("//button[@clas='xyz'] | //button[@clas='abc']"))

    我将上述表达式用于 JAVA + Selenium + Maven 项目

    【讨论】:

      【解决方案3】:

      使用 pom: @FindBy(xpath ="//span[contains(@class,'vui-menuitem-label-text') and normalize-space(.) = 'Clone']")

      【讨论】:

        【解决方案4】:

        选择所有标签:

        • <td class="blob-code blob-code-addition">
        • <td class="blob-code blob-code-deletion">

        您可以使用以下任一Locator Strategies

        • 使用 xpathclass 属性和 or 子句:

          //td[@class='blob-code blob-code-addition' or @class='blob-code blob-code-deletion']
          
        • 通过带有 or 子句的单个 class 属性使用 xpath

          //td[contains(@class,'blob-code-addition') or contains(@class,'blob-code-deletion')]
          
        • 通过带有or子句的部分class属性使用xpath

          //td[contains(@class,'addition') or contains(@class,'deletion')]
          

        【讨论】:

          猜你喜欢
          • 2022-01-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-05-02
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多