java - Selenium Java - 如何查找动态更改类型的元素?

标签 java eclipse dynamic selenium-webdriver

我正在 Eclipse 中使用 Selenium WebDriver 为登录页面编写测试。 出于安全原因,登录页面上的密码字段首先作为文本字段 (passwordText) 加载。但是,当用户将光标置于用户名或密码字段时,密码字段类型将使用 javascript 更改为密码(密码)。

问题是我的 Selenium 测试找不到密码字段。它返回错误'org.openqa.selenium.NoSuchElementException:无法定位元素:{“method”:“id”,“selector”:“password”}'

这是我正在使用的代码:

driver.get(baseUrl + "/login");
driver.findElement(By.id("username")).clear();
driver.findElement(By.id("username")).sendKeys("username1");
driver.findElement(By.id("password")).clear();
driver.findElement(By.id("password")).sendKeys("mypassword");

如何编写代码才能正确找到密码字段?

最佳答案

我已经找到了答案,并将其添加到此处以供其他遇到类似问题的人使用。

解决方案是首先通过其第一个 id(密码文本)找到该字段,然后使用光标焦点后更改为的 id(密码)将 Keys 发送到该字段。

driver.findElement(By.id("username")).clear();
driver.findElement(By.id("username")).sendKeys("username1");
driver.findElement(By.id("passwordText")).clear();
driver.findElement(By.id("password")).sendKeys("mypassword");

关于java - Selenium Java - 如何查找动态更改类型的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36838143/

相关文章:

java - 强制关闭Java应用程序是否会导致数据库连接泄漏

java - 我不太了解 do { } while 结构

java - 使用 Eclipse 公开成员的 getter 和 setter

java - 如何添加库jar的源文件?

java - 在 Tomcat 中为 Spring MVC REST API 禁用默认错误页面

java - 将 int[][] 转换为 String

c - 动态创建的树中的根到节点计算

php - 动态预处理语句不好吗? (使用 php + mysqli)

java - 使用 eclipse 进行 mySql 连接创建基于 Android 的应用程序时遇到问题

c++ - 在不同 block 之间使用 C++ 类对象