gpt4 book ai didi

java - 迭代具有相同属性的输入对象集合 : Java Selenium Webdriver

转载 作者:行者123 更新时间:2023-11-30 08:17:10 25 4
gpt4 key购买 nike

我已经尝试了这里提供的一些迭代示例,但我还不能迭代输入字段的集合,所有这些字段都具有相同的标识属性: , 和 。

我需要遍历所有这些对象并向每个对象添加相同的字符串。以下代码将字符串分配给输入字段的第一个实例,但不会移动到下一个实例:

List<WebElement> allSumInsuredFields = driver.findElements(By.id("ctl00__txtSumInsured"));
Iterator<WebElement> itr = allSumInsuredFields.iterator();
while(itr.hasNext()){

if (driver.findElement(By.id("ctl00_txtSumInsured")).getText().equals("")) ;
driver.findElement(By.id("ctl00_txtSumInsured")).sendKeys("£250000");

itr.next();
}

最佳答案

您的代码的主要问题是在循环内您使用 driver.findElement 获取要处理的元素。这不仅会做额外的工作,而且这会使您的算法不正确findElement 方法(单数形式)返回它们找到的第一个元素。因此在您的代码中,无论循环迭代多少次都无关紧要,它总是对第一个具有您想要的 id 的元素进行操作。

如 Saifur 所述,您应该使用 getAttribute("value") 来获取 input 元素的值。所以你需要这样的东西:

for(WebElement el : driver.findElements(By.id("ctl00__txtSumInsured"))) {
if (el.getAttribute("value").equals(""))
el.sendKeys("something");
}

与 Saifur 相反,我并不是建议您在此循环之前使用显式等待。您是否需要一个,以及它应该采用什么形式,实际上取决于被测试的应用程序。您在问题中说的不够多,无法做出此决定。额外的、不必要的检查并非无害:它会使您的 Selenium 脚本变慢。如果您养成了进行不必要检查的习惯,您可以为脚本增加 分钟 的运行时间。不检查完全正确的检查实际上是有害的。

关于java - 迭代具有相同属性的输入对象集合 : Java Selenium Webdriver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28033787/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com