如何执行 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"));