如何为同一个键使用两个不同的XPATH值

时间:2017-05-31 16:16:32

标签: javascript html css xpath

EX:两个不同门户中同一对象的Xpath是

  • //*[@id="abc"]/fieldset/div/div/div[1]/label
  • //*[@id="xyz"]/fieldset/div[1]/fieldset/div/div/div[1]/label

我想在同一个键中使用这两个值。在运行时,如果selenium webdriver应该找到任何人并继续。我试过下面的一个,但它不起作用。

//*[@id="abc"]/fieldset/div/div/div[1]/label) | //*[@id="xyz"]/fieldset/div[1]/fieldset/div/div/div[1]/label

//*[@id="abc"]/fieldset/div/div/div[1]/label) or //*[@id="xyz"]/fieldset/div[1]/fieldset/div/div/div[1]/label

请在这里帮助如何使用或管道功能。

1 个答案:

答案 0 :(得分:0)

一个简单的try catch块可以帮助你:

 try{
     //first use this
    driver.findElement(By.xpath("//*[@id="abc"]/fieldset/div/div/div[1]/label"));


   }
   catch(Exception e)
   {
    //if caught in exception then use this
    driver.findElement(By.xpath("//*[@id="xyz"]/fieldset/div[1]/fieldset/div/div/div[1]/label"));


  }

或者你可以使用以下干净的方法:

List<WebElement> itemList1 = driver.findElements(By.xpath("//*[@id="abc"]/fieldset/div/div/div[1]/label"));

List<WebElement> itemList2 = driver.findElements(By.xpath("//*[@id="xyz"]/fieldset/div[1]/fieldset/div/div/div[1]/label"));

if(listItem1.size() >0 ){

   driver.findElement(By.xpath("//*[@id="abc"]/fieldset/div/div/div[1]/label"));

  }
else if (listItem2.size() >0 ){

   driver.findElement(By.xpath("//*[@id="xyz"]/fieldset/div[1]/fieldset/div/div/div[1]/label"));
}