Specifying multiple conditions in xpath

旧时模样 提交于 2021-02-18 11:42:05

问题


I want to select all the tags with <td class='blob-code blob-code-addition'> and <td class='blob-code blob-code-deletion'> . So I am trying to include or condition here between the two predicates. It does not work. However, if I include only one of the two classes it works . What is the problem here? Something is wrong with the syntax.

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

回答1:


You want to specify that like the following:

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

or

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

If you want to do a tag independent search then you can simply use

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

From your answer it looks like you are trying to concatenate two different xpaths

However, contians() is not mandatory here. You also can do without this

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



回答2:


what works for me is below expression using "|" character inside my expression-

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

I used above expression for JAVA + Selenium + Maven project




回答3:


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




回答4:


To select all the tags with:

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

You can use either of the following Locator Strategies:

  • Using xpath through class attribute with or clause:

    //td[@class='blob-code blob-code-addition' or @class='blob-code blob-code-deletion']
    
  • Using xpath through single class attribute with or clause:

    //td[contains(@class,'blob-code-addition') or contains(@class,'blob-code-deletion')]
    
  • Using xpath through partial class attribute with or clause:

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


来源:https://stackoverflow.com/questions/28529577/specifying-multiple-conditions-in-xpath

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!