如何检查硒中面包屑的顺序

Posted

技术标签:

【中文标题】如何检查硒中面包屑的顺序【英文标题】:How to check the order of breadcrumbs in selenium 【发布时间】:2015-03-11 14:58:42 【问题描述】:

我有一个标题定义为第一/第二/第三作为面包屑。我想使用 selenium 以最佳编码方式检查元素是否以正确的顺序显示。

<ol class = "breadcrumb"
     <li class="break-all">        
          <a href="..." class="break-all">First</a>
          <span class="divider">/</span> 
   </li>
   <li class="break-all">        
          <a href="..." class="break-all">Second</a>
          <span class="divider">/</span> 
   </li>
   <li class="break-all">        
          <a href="..." class="break-all">Third</a>
          <span class="divider">/</span> 
   </li>
</ol>

当我这样做的时候

findBy("//ol[@class='breadcrumb']")

,我得到了整个元素。

【问题讨论】:

【参考方案1】:

首先,您需要找到所有面包屑元素,例如,通过cssSelector()。然后,为列表中的每个 WebElement 调用 getText() 以获取实际文本:

List<String> expected = Arrays.asList("First", "Second", "Third");

List<WebElement> breadcrumbs = driver.findElements(By.cssSelector("ol.breadcrumb li a"));
for (int i = 0; i < expected.length; i++) 
    String breadcrumb = breadcrumbs.get(i).getText();
    if (breadcrumb.equals(expected[i])) 
        System.out.println("passed on: " + breadcrumb);
     else 
        System.out.println("failed on: " + breadcrumb);
    

【讨论】:

【参考方案2】:
findBy("//ol[@class='breadcrumb']").getText().equals("First / Second / Third");

它应该可以工作。

【讨论】:

【参考方案3】:

要解决您的问题,您可以按照以下流程:

1- 创建一个“ArrayList”并添加所有需要比较的项目。 2- 检索链接文本并将其放入新的 ArrayList。 3- 断言两个 ArrayList 匹配。

下面的代码应该适合你:

//Adding all the list items to compare in an ArrayList
ArrayList<String> alist = new ArrayList<String>();
alist.add("First");
alist.add("Second");
alist.add("Third");

//Checking the Arraylist's data
System.out.println("The list values are as under: ");
for(String list_item: alist)
    System.out.println(list_item);

//Creating an ArrayList to store the retrieved link texts
ArrayList<String> List_Compare = new ArrayList<String>();

//Retrieving the link texts and putting them into the Arraylist so created
List<WebElement> New_List = driver.findElements(By.xpath("//a[@class='break-all']"));
for(WebElement list_item: New_List)
    List_Compare.add(list_item.getText());


//Checking the new Arraylist's data
System.out.println("The Retrieved list values are as under: ");
for(String list_item: List_Compare)
    System.out.println(list_item);

//Asserting the original Arraylist matches to the Arraylist with retrieved Link Texts 
try
    Assert.assertEquals(alist, List_Compare);
    System.out.println("Equal lists");
catch(Throwable e)
    System.err.println("Lists are not equal. "+e.getMessage());

注意:请使用 import junit.framework.Assert; 导入 Assert 类,以使代码的最后一部分正常工作。

【讨论】:

【参考方案4】:

您需要创建一个已知值列表以进行比较。然后使用findElements() 查找与您的目标匹配的所有元素。在这方面,您还需要仔细编写选择器,以便它获取预期元素的列表。 //a[@class='break-all']可以用来抓取你想要的元素列表

String[] expected = "First", "Second", "Third";
List<WebElement> allOptions = select.findElements(By.xpath("//a[@class='break-all']"));

// make sure you found the right number of elements
if (expected.length != allOptions.size()) 
    System.out.println("fail, wrong number of elements found");

// make sure that the value of every <option> element equals the expected value
for (int i = 0; i < expected.length; i++) 
    String optionValue = allOptions.get(i).getText();
    if (optionValue.equals(expected[i])) 
        System.out.println("passed on: " + optionValue);
     else 
        System.out.println("failed on: " + optionValue);
    

实现取自here

【讨论】:

以上是关于如何检查硒中面包屑的顺序的主要内容,如果未能解决你的问题,请参考以下文章

如何使用面包屑导航组件

webpack--手写loader

如何安装新星面包屑?

breadmaker面包机不工作原因?

如何在 Swift 中将位置面包屑保存到 CoreData

如何在 Django 模板中实现面包屑?