在 Salesforce Lightning / Java 脚本问题上将 Selenium 与 Java 结合使用

Using Selenium with Java on Salesforce Lightning / Javascript problems

我们在 Sales Force 非 Lightning 上进行了 Selenium 测试 运行ning。现在我正在转换为 Lightning。有一连串的菜单要经过。我已成功导航到某个菜单,但现在 运行 遇到了问题。这不是关于新元素名称的标准问题。这是问题。这是页面外观的一小部分(见下文)。

使用 Chrome 检查时,我可以找到元素。这就是它的样子(与上面对应的一个小横截面)。 SPAN 标记具有标签(“原始协议”),其下方的 DIV 将包含输入值框。

<div class="slds-form-element__control" data-aura-rendered-by="228:1224;a">
 <div data-aura-rendered-by="1108:0" class="uiInput forceSearchInputLookupDesktop uiInput--default" data-aura-class="uiInput forceSearchInputLookupDesktop uiInput--default">
  <label class="label inputLabel uiLabel-left form-element__label uiLabel" for="157:1224;a" data-aura-rendered-by="1103:0" data-aura-class="uiLabel">
   <span class="" data-aura-rendered-by="1104:0">Original Agreement</span>
   <!--render facet: 1106:0--><!--render facet: 1107:0--></label>
   <div data-aura-rendered-by="161:1224;a"><div class="contentWrapper slds-box--border" data-aura-rendered-by="162:1224;a">

但是,Selenium 无法找到元素(尽管 inspect 可以)。当我执行“查看页面源代码而不是 检查一下,几乎所有内容都在 JavaScript 中,如下所示:

function rewriteAndInjectCss(linkEl, source, varLookup) {
    var css = rewriteCssVars(source, varLookup);
    injectStyles(linkEl, css);
}

但更多。几乎所有功能,可能只有几个元素。

过去,当我看到类似的东西时,通常会切换到一个 iframe 来获取元素。但是没有iframe可以切换。所以我不知道如何获得这些。任何人都可以解释一下吗?

好的。找到了。我需要做一个 driver.switchTo().defaultContent()