我尝试切换到iframe以便找到元素,但由于没有id
或name
<div id="eyein-modal" style="display: block; position: fixed; width: 100%; height: 100%; top: 0px; left: 0px; bottom: 0px; right: 0px; z-index: 90000000; background-color: rgba(0, 0, 0, 0.6); overflow: auto; opacity: 1;">
<iframe style="display: block; width:90%; height:90%; border: 0px; margin: 2.5% auto; z-index: 90000000; overflow: hidden;" scrolling="no" src="about:blank">
<html>
<head>
<body class="">
<div id="modal">
<div id="modal-header">
<div id="header-logo">
<div id="title-container" class="">
<a id="view-event" class="button" target="_blank" href="http://www.link.com">view event</a>
<div id="close-modal" class="close-dark"></div>
close-modal
是我最终需要的元素
答案 0 :(得分:4)
除了提供框架名称或ID之外,您还可以切换到框架by index(从零开始):
按其(从零开始)索引选择一个帧。也就是说,如果页面有三个 帧,第一帧将在索引“0”,第二帧在索引“1” 和第三个在索引“2”。一旦选择了框架,全部 对WebDriver接口的后续调用将在该帧上进行。
driver.switchTo().frame(0); // assuming this is the first frame on the page
或者,您可以通过查找WebElement
来创建iframe
实例,例如,通过CSS选择器:
WebElement frame = driver.findElement(By.cssSelector("div#eyein-modal iframe"));
driver.switchTo().frame(frame);
另见:
答案 1 :(得分:1)
如果在R中使用RSelenium的任何人遇到这个小问题,那就是我使用的:
webElement <- remDr$findElement(using = "css selector", "#dsq-app1")
remDr$switchToFrame(webElement)
# note: remDr is the remoteDriver instance that needs to be opened at the beginning
或
webElement <- remDr$findElement(using = "id", value = "dsq-app1")
remDr$switchToFrame(webElement)
答案 2 :(得分:0)
我遇到了这个问题......使用带有Codeception的Webdriver。我的解决方案是运行一个javascript代码段给iframe一个名字,然后我可以根据名称切换到它......详情请点击此处:https://stackoverflow.com/a/48123837/1593026