如何执行 Xpath 循环并跳过一个元素



如何执行 X 路径循环?

for  (int i=1;i<3;i++)
    String xPath = "//*[@id='rso']//h3/a["+i+"]"
    all_elements_text.add(driver.findElement(By.xpath(xPath)).getText());                  
return all_elements_text.toArray() ; } 

我想跳过a[2]

尝试下面的代码

for  (int i=1;i<3;i++){
    if(i!=2){
        all_elements_text.add(driver.find Element(By.xpath("//*[@id='rso']//h3/a["+i+"]")).getText());  
    return all_elements_text.toArray() ; 
    }

使用以下代码来实现您所需的相同内容

public static ArrayList<String> getAllValues()
{
    ArrayList<String> all_elements_text = new ArrayList<>();
    for(int i=1;i<3;i++)
    {
        if(i!=2)
        {
            all_elements_text.add(driver.findElement(By.xpath("//*[@id='rso']//h3/a["+i+"]")).getText()); 
        }
    }
    return all_elements_text;
}

并从您的测试中调用此方法,它需要获取所有文本并打印所有值,例如

@Test
public void yourTestCase()
{   
     for(String s :getAllValues())
     {
         System.out.println(s);
     }
}

关于解决方案的一些事实:

  • 正在编制索引的xpath变得脆弱
  • 您永远不确定Google Analytics何时更改搜索结果的索引。
  • 因此,最佳做法是避免并从搜索结果中删除关键字,例如 Documentation等。

因此,请记住这些,让我们假设我们会:

  • 打开URL https://www.google.com/
  • 搜索文本selenium webdriver
  • 从整个搜索结果中,我们希望删除包含单词的结果Documentation
  • 下面是搜索文本selenium webdriver并删除包含单词 Documentation 的结果的示例代码:

    List <WebElement> my_list = driver.findElements(By.xpath("//div[@id='rso']//div[@class='srg']/div[@class='g']//h3/a"));
    List <String> my_text = new ArrayList<String>();
    for (int i=0; i<my_list.size(); i++)
        if(!my_list.get(i).getAttribute("innerHTML").contains("Documentation"))
            my_text.add(my_list.get(i).getAttribute("innerHTML"));  
    

相关内容

最新更新