【发布时间】:2019-01-29 11:00:35
【问题描述】:
最近我的任务是使用 Selenium Automation 自动化 MS CRM 365。为此,我选择了使用 Gradle 和 Java,使用 IntelliJ。
目前我的问题是当我在表单页面上时,我无法访问该页面上的任何元素以进行数据输入或下拉选择。
我尝试过使用 iFrame 切换:
driver.switchTo().frame(driver.findElement(By.cssSelector("#contentIFrame0")));
我尝试过从 ID、XPATH 和 CSS 中进行选择。
代码是一个简单的driver.findElement;它没有什么特别之处。我似乎在最基本的部分失败了。
driver.findElement(By.id("firstname_i")).click();
预期结果:能够访问元素并处理单击,然后从下拉列表中进行选择或文本输入。
实际结果:
org.openqa.selenium.NoSuchElementException: Unable to find element with css selector == #firstname_i
Image to Firefox Inspection of the Element
我想知道 CSS 中是否存在阻止我访问该元素的内容。我注意到“文本”框的元素位于几层之下并且不显示,除非访问顶层。但是,我无法找到该元素来跟随流程。希望这有点道理。
【问题讨论】:
-
我可能会弄错,因为我不必在代码中经常切换帧,但我相信切换时的参数只是帧名称本身(用引号引起来)。很可能您的帧切换失败且没有错误,随后即使是 corect 定位器也无法找到有问题的元素。
-
@BillHileman 从我使用的语言绑定中,通常有 3 个选项可用于切换到框架...索引、名称/id 和传递实际元素。见this
-
感谢@JeffC 的更正。
-
@BillHileman 没问题...与其说是“更正”不如说是仅供参考...
标签: java selenium internet-explorer automation dynamics-crm