给出以下html标记结构:
<body>
<div id=Body>
<div>
<iframe>//Data within iframe is generated dynamically
<html>
<head></head>
<body>
<div id="abcdef">
<div></div>
<div></div>
<div></div>
</body>
</html>
</iframe>
</div>
<body>
我想访问<div id="abcdef">
的xpath和CSS Selector,但我无法,因为它将内部<html>
标记称为不同的框架。
答案 0 :(得分:1)
使用
<body>
<div id="Body">
<iframe>//Data within iframe is generated dynamically
<html>
<head></head>
<body>
<div id="abcdef">
<div></div>
<div></div>
<div></div>
</div>
</body>
</html>
</iframe>
</div>
</body>
我能够用:
成功选择该元素//iframe//div[@id = 'abcdef']
在此处试试:http://www.freeformatter.com/xpath-tester.html
但是,由于iframe安全限制,这在DOM中不起作用。此xpath是正确的,但您可以使用
在chrome dev控制台中进行测试$x("//iframe//div[@id = 'abcdef']")
并且看到你没有得到任何结果。在处理HTML文档时,您的浏览器会限制您对iframe的访问,因此您需要实际抓取iframe,阅读html,然后搜索该html。据我所知,您无法使用xpath或css选择器,而无法获取iframe的内容,然后将其作为自己的文档/元素进行搜索。
答案 1 :(得分:1)
像下面那样抓住iframe,
driver.switch_to.frame(driver.find_element_by_id(&#39; frameid&#39;));
要参考更多方法, 这是a link
切换到框架,可让您直接访问所有元素。
以上示例xpath将是: // * [@ id中=&#39; ABCDEF&#39;]