java - webdriver 查找但不访问元素

标签 java webdriver selenium-webdriver

使用 java webdriver 逐个选择页面元素是否有技巧?我正在尝试在 iframe 内的表单中设置值。

我首先切换 iframe,然后可以访问和更改第一个下拉列表中的值。我可以从其他页面创建 WebElement,但我根本无法与它们交互。

下面的代码允许我更改第一个下拉列表的值。

driver.switchTo().frame(0)

WebElement fromList = driver.findElement(By.id("foo"));
r.selectItemByText(fromList, "var");

此后我无法访问任何元素。我可以毫无错误地找到它们,但我无法对它们做任何事情,因为它说它们没有数据。

WebElement fromList = driver.findElement(By.id("bar"));
r.selectItemByText(fromList, "foo");**

第二行返回此错误:

NoSuchElementException: Cannot locate element with value 'foo'

如果我删除它,我不会收到错误,因此代码看到的是元素而不是它的值。

最佳答案

如果元素位于不同的框架上,则必须切换回默认框架,然后再次返回。

类似于:

driver.switchTo().defaultContent();

原因是因为一旦切换到一个框架,如果切换到另一个框架,则搜索将仅是该原始框架的子框架。因此,您必须切换回顶部框架,然后再次向下切换。

关于java - webdriver 查找但不访问元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12075325/

相关文章:

java - 使用 Web 界面或任何可视化工具运行 Selenium WebDriver 测试

python - 如何在多个浏览器中运行一个 python webdriver 测试

python-3.x - 如何使用 python 的 selenium 获取 href 属性?

java - 如何识别什么类型的自定义数组列表包含一个对象?

java - 如何在我变暗的图层上方显示一个 block

java - 在单个线程上发出通知会唤醒所有等待的线程

javascript - Protractor 返回 Promise 而不是属性值

java - 类和子类的处理方式是否相同?

google-chrome - 无法使用经过 http 基本身份验证的 Selenium WebDriver 中的默认/自定义配置文件启动 Google Chrome

java - 当没有 id 时,如何在 Selenium 中单击此图像链接?