我需要在下图中找到文字“与您的搜索相关的品牌”
我该如何写xpath。该文本存在于没有ID或类或唯一标识符的iframe中。我当时想使用跨度数据组件ID来找到它,但它不起作用。
By.xpath(“ // span [@ data-component-id = '36'] / iframe
请帮助
答案 0 :(得分:0)
您无法遍历<iframe>
上的元素,它位于不同的上下文中。您需要激活或切换到iframe的上下文,例如。使用JavaScript与iframe和其中的文档进行交互。
//Note: Assigning document.domain is forbidden for sandboxed iframes, i.e. on stacksnippets
//document.domain = "https://stacksnippets.net";
var ifrm = document.getElementById("myFrame");
// reference to iframe's window
//var win = ifrm.contentWindow;
// reference to document in iframe
var doc = ifrm.contentDocument ? ifrm.contentDocument : ifrm.contentWindow.document;
// reference an element via css selector in iframe
//var form = doc.getElementById('body > div > div.message');
// reference an element via xpat in iframe
var xpathResult = doc.evaluate("/html/body/div/div[1]", doc, null, XPathResult.ANY_TYPE, null);
<iframe id="myFrame" src="https://stacksnippets.net" style="height:380px;width:100%"></iframe>
但是,正如您看到的那样,在运行摘要后,跨文档交互仅在文档具有相同来源的情况下才可行。还有其他更复杂的方法,例如postMessage方法,提供了交互跨域的方法。