【问题标题】:Element Visible on the page but shows null元素在页面上可见但显示为空
【发布时间】:2012-09-16 15:31:14
【问题描述】:

无法识别页面中的元素。它给出null。我想识别Iframe(文本框)中的元素。我使用selenium webdriver点击元素,但它无法识别元素

1) 我的 HTML 代码如下所示

      <html>
        <head>
         <body>
         <iframe id="iframeOne">                  
             </iframe>
         </body>    
          </head>

              </html>     

2。我使用 javascript 来识别像 document.getElementById('textbox') 这样的文本框。
但它返回 null。

3.我什至尝试过使用 selenium webdriver

  IWebElement ClickElement = Wait.Until((d) => webDriver.FindElement(By.Id(parameter1))); It gives object reference error
            ClickElement.Click();

【问题讨论】:

  • 没有合适的结束标签
  • 我只是对上面的html代码做了一个粗略的标记。只是一个示例。但是html代码有正确的开始和结束标记。
  • 我建议你学习 HTML,不要问。并且接受一些答案,你的回答率只有 53%,如果你的回答率低,没人愿意帮助你。

标签: c# javascript jquery selenium webdriver


【解决方案1】:

当且仅当浏览器支持 iframe 标签时,您放置在 iframe 标签内的 html 代码将被加载并可见。所以可能永远不会,除非您使用的是旧版 Netscape navigator 或 IE 4。

src 属性添加到指向您要加载的url 的iframe。然后你可以通过这种方式访问​​里面的元素:

var frame = document.getElementById('iframeOne');
var frameDocument = frame.contentDocument;
var element = frameDocument.getElementById('xxxx');

但有一点需要考虑:当 iframe 的 src 是跨域时访问 contentDocument 可能无法按预期工作。

【讨论】:

    【解决方案2】:

    您不能将 html 放在 iframe 标记中。它是在当前页面中加载另一个页面。并且您的输入标签应该包含控件的类型。并检查 HTML 验证错误。

    【讨论】:

    • 它只是一个例子..但是我真正的源代码有一个控件类型和其他东西。
    • 所以你为什么不把真正的代码放在这里。您希望我们猜测您的代码并重新创建问题吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-22
    • 1970-01-01
    • 2017-11-27
    相关资源
    最近更新 更多