WebDriver - 如何找到没有id的iframe

时间:2015-06-28 16:31:11

标签: selenium iframe selenium-webdriver

我尝试切换到iframe以便找到元素,但由于没有idname

<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是我最终需要的元素

3 个答案:

答案 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