当前位置: 首页 > 知识库问答 >
问题:

List返回空列表

郭凯
2023-03-14
    private final By listNotificationType = By.xpath("//*[@id='a24687a9017f']//p/text()");
   
    public List<WebElement> verifyListNotificationType()
        {
            List<WebElement> drpdwnData = new ArrayList<>();
            for(WebElement a: driver.findElements(listNotificationType))
            {
                drpdwnData.add(a);
            }
            return drpdwnData;
        }
        
    String[] arrNotifications = { "Abc", "Xyz", "Def" };
    List<Object> listNotifications = Arrays.asList(arrNotifications);
    
    MyPage myPage = new MyPage();
    System.out.println("Final Data:: "+myPage.verifyListNotificationType());         
  Assertions.assertThat(listNotifications).hasSameElementsAs(myPage.verifyListNotificationType());

有人能告诉我为什么列表返回空吗?我的xpath是准确的,因为我重新检查了它,但我仍然无法迭代它,而调试for循环甚至没有执行。我不确定我哪里出了问题。

共有1个答案

太叔昊穹
2023-03-14

而不是

List<WebElement> drpdwnData = new ArrayList<>();

您应该像这样定义WebElement列表

List<WebElement> drpdwnData = new ArrayList<WebElement>();

此外,对于for循环声明,我们不需要。请看这一行:

for(WebElement a: driver.findElements(listNotificationType));

我还建议不要在XPath中使用text()。相反,尝试使用下面的代码。

迭代之前,如果list的大小>0,则进入for循环,否则不要进入inside循环。这样,您将得到位优化的代码。

private final By listNotificationType = By.xpath("//*[@id='a24687a9017f']//p");

public List<WebElement> verifyListNotificationType()
{
    List<WebElement> drpdwnData = new ArrayList<WebElement>();
    List<WebElement> actualList = driver.findElements(listNotificationType);
    if (actualList.size() > 0) {
        System.out.println("actualList does have at least one web element, So Bot will go inside loop.");
        for(WebElement a : actualList)
            drpdwnData.add(a);
    }
    else
        System.out.println("actualList does not have any web element, So Bot will not go inside loop.");
    return drpdwnData;
}
 类似资料:
  • 问题内容: 我正在尝试编写一个用于与last.fm API进行交互的小脚本。 我有一点使用的经验,但是以前使用它的方式似乎无效,而是返回一个空列表。 我删除了API密钥,因为我不知道它到底应该有多私密,并举了一个示例,说明了我在该位置接收的XML。 与API交互的类: 调用的get_now_playing方法: 我收到的xml样本: 问题答案: 问题在于, 如果给定标签名称,则仅搜索元素的直接后代

  • 我试图用刮擦和飞溅来刮取衣服的图像和一些产品信息。我想得到的形象,只有产品(所以没有模型)。比如这张照片https://www2.hm.com/nl_nl/productpage.0220094001.html 然而,如果我试图让src在Scrapy shell中 回答xpath('//figure[包含(@class,“secondary”)]///img//@src')。摘录() 返回一个空列

  • 问题内容: 考虑到内置的Python List方法,我遇到了问题。 在学习Python的过程中,我一直认为Python变量(就像任何值类变量一样)会返回它创建的新变量。 举个例子: 此列表更改器不返回新列表的主要问题是您随后无法再进行多个更改。假设我想要一个从0到5的列表,而没有2和3。突变体返回新变量应该能够做到这一点: 令人遗憾的是,这不可能。 现在,有没有一种方法可以像我在示例中一样在列表上

  • 我们正在使用Spring 4.x 和 swagger-jersey2-jaxrs_2.10。Swagger 不会列出我的 API,它总是只返回版本详细信息。 pom.xml web.xml 资源类 ResourceConfig类 我的应用程序基路径/api-docs返回

  • 如果我跑: 我会得到一张空名单。我猜它与名称空间有关,但我不知道如何修复它。

  • 问题内容: 我在Android中有一个客户端应用程序,用于将文件发送到服务器。服务器使用Apache Commons FileUpload API来解析表单数据值。 该发送该请求: 服务器代码: 问题就在这里。返回的列表为空,我无法获取表单数据值。 问题答案: 如果您已经(隐式)预先解析了请求正文,则此位置将为空。HTTP请求正文只能被读取/解析 一次 (因为客户端仅发送一次,并且不会多次发送)。