【问题标题】:How to get a random value from a random WebElement from a List of WebElements如何从 WebElement 列表中的随机 WebElement 中获取随机值
【发布时间】:2017-12-07 19:52:13
【问题描述】:

我正在尝试将随机属性的值保存在字符串中 之后,我想点击它,这样我就可以保存页面的标题并比较两个字符串 我的代码就在这里:

public void clickOnRandomProduct(List <WebElement> elements){


        Random r = new Random();
        int randomValue = r.nextInt(elements.size()); 
        String valoareField=elements.get(randomValue).getAttribute("alt");
        System.out.println(valoareField);
        elements.get(randomValue).click();

    }

我从字符串中收到“null”,但我不知道为什么

【问题讨论】:

  • 您没有显示将值分配给元素列表的代码,但我猜它们都是图像,因为你们都打算检查“alt”属性并点击它们?您是否将数组限制为仅一种类型(标签)的元素?
  • 是的 这是一个包含带有图像的产品的页面 我想从随机产品中获取属性值“alt” 然后我想点击该产品 然后我想从产品中获取文本比较字符串
  • 您是否使用“//img”作为xpath?你在检查一个空列表吗?您可以在原始消息中发布一段 HTML 代码吗?
  • 这是页面显示的随机产品的路径 s0emagst.akamaized.net/products/9650/9649839/images/…" alt="Sistem Desktop PC All-in-One Acer DQ.UAPEX.002 cu 处理器 AMD E1 7010 1.5 GHz, 19.5”, 4GB, 1TB, Intel HD Graphics, Microsoft Windows 10 Home, Black, Mouse + Tastatura"/> 我想从 valoareField String 中的 alt 属性中获取文本
  • 它可能在这个特定示例中返回 null,因为代码似乎有一个缺陷:它使用双引号来表示英寸,我假设屏幕尺寸 (19.5"),这会导致混淆解析文本时。否则我看不出你的代码有什么问题。

标签: java selenium automation


【解决方案1】:

我不知道为什么我没有早点发现这一点。

更改你的函数声明:

public void clickOnRandomProduct(List<WebELement> elements) {

当然,更改您声明/设置该列表的代码。

【讨论】:

  • 我改变了函数的声明如下: public void clickOnRandomProduct(List elements){ //contruiesc pe langa validare de titlu Random r = new Random(); int randomValue = r.nextInt(elements.size()); String valoareField=elements.get(randomValue).getAttribute("alt"); System.out.println(valoareField);元素.get(randomValue).click(); } 但我仍然从 webelement 中得到空值
  • 如果如您所说,该逻辑适用于单个 Web 元素但不适用于数组,那么问题一定出在您的数组(列表)中。您是否在代码的调用部分更改了元素列表本身的声明?您定义和初始化元素列表的代码行是什么?它应该类似于List&lt;WebElements&gt; elements = driver.findElements(By.xpath("//img"));
  • List selectRandomProduct=driver.findElements(By.xpath("//a[@class='thumbnail js-product-url']"));这就是我声明的 WebElement 列表 xpath 没问题,在页面上我有 60 个元素具有此属性类值,xpath 给了我 60 个结果匹配所以问题不在于我的 xpath
  • 在这一点上,我只能附和@JeffC 所说的话。如果没有看到 HTML 代码,我们无法确定该列表是您认为的那样,或者每个项目都有 ALT 标记。就此而言,即使它以真正随机的方式运行。您可能应该使用调试器单步执行代码并检查值。
猜你喜欢
  • 1970-01-01
  • 2015-10-12
  • 2023-02-25
  • 2015-10-18
  • 2012-04-21
  • 2017-11-15
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
相关资源
最近更新 更多