【问题标题】:Unable to Access Elements on MS CRM 365无法访问 MS CRM 365 上的元素
【发布时间】: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


【解决方案1】:

所以在玩了一会儿之后,我注意到我的 iframe 开关正在工作,但是我试图访问的元素是正确的,只是不完整,不确定这是否与其他任何人相关,但我必须添加一个方法通过选择初始元素“name”然后选择第二个元素作为输入“name_i”来解决我的元素问题。

好像我最初尝试选择“name_i”一样,我得到了整个“找不到元素”,因为 CSS 将其设置为不可见,除非通过鼠标悬停/单击第一个元素(覆盖?)激活。

整个表单页面似乎都是这种情况。

以前从未使用过 MS 365,所以我不知道这是否可行甚至常见。

谢谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-12
    • 2023-03-28
    • 2016-05-03
    • 2012-09-09
    • 1970-01-01
    相关资源
    最近更新 更多