为什么我们需要切换到iframe来访问其中的元素

时间:2016-02-11 08:40:51

标签: java iframe selenium-webdriver

生成iframe

的Html代码
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <title></title>
</head>
<body>
    <div style="padding-top:10px;">
        <a href="https://twitter.com/url" class="twitter-follow-button" data-show-count="false" data-size="large" data-show-screen-name="false">Follow @url</a>
        <script>!function(d, s, id) {
            var js, fjs = d.getElementsByTagName(s)[0], p = /^http:/.test(d.location) ? 'http' : 'https';
            if (!d.getElementById(id)) {
                js = d.createElement(s);
                js.id = id;
                js.src = p + '://platform.twitter.com/widgets.js';
                fjs.parentNode.insertBefore(js, fjs);
            }
        }(document, 'script', 'twitter-wjs');</script>
    </div>                    
</body>
</html>

如果我通过找到所有&#39; a&#39;来找到这个元素。 iframe中的标签然后我得到过时的元素引用异常。 如果我切换到iframe,那么我就不会得到例外。

1 个答案:

答案 0 :(得分:0)

Selenium仅与当前帧中的元素交互。在切换到该帧之前,无法与子框架内的任何元素进行交互。
   在同一个窗口中切换到另一个窗口或另一个选项卡是一致的行为,因为您实际上有另一个不同于原始的HTML DOM。

The definition of an iframe from W3Schools:iframe用于在网页中显示网页。

iframe语法
添加iframe的语法是:

<iframe src="URL"></iframe> 

示例

<iframe src="demo_iframe.htm" width="200" height="200"></iframe>