当frame没有id的时候如何识别和切换到selenium webdriver的frame

任何人都可以告诉我如何识别和切换到只有一个标题的iframe?

<iframe frameborder="0" style="border: 0px none; width: 100%; height: 356px; min-width: 0px; min-height: 0px; overflow: auto;" dojoattachpoint="frame" title="Fill Quote" src="https://tssstrpms501.corp.trelleborg.com:12001/teamworks/process.lsw?zWorkflowState=1&zTaskId=4581&zResetContext=true&coachDebugTrace=none"> 

我已经尝试了下面的代码,但它不工作

 driver.switchTo().frame(driver.findElement(By.tagName("iframe"))); 

你可以使用cssSelector,

 driver.switchTo().frame(driver.findElement(By.cssSelector("iframe[title='Fill Quote']"))); 

driver.switchTo().frame()有多个重载。

  1. driver.switchTo().frame(name_or_id)
    这里你的iframe没有id或name,所以不适合你。

  2. driver.switchTo().frame(index)
    这是最后的select,因为使用索引不够稳定,你可以想像。 如果这是您页面中唯一的iframe,请尝试使用driver.switchTo().frame(0)

  3. driver.switchTo().frame(iframe_element)
    最常见的一个。 您像其他元素一样定位您的iframe,然后将其传递到方法中。

这里通过title属性来定位似乎是最好的。

 driver.switchTo().frame(driver.findElement(By.cssSelector("iframe[title='Fill Quote']"))); // driver.switchTo().frame(driver.findElement(By.xpath(".//iframe[@title='Fill Quote']"))); 

你也可以使用src切换到frame,这里是你可以使用的:

 driver.switchTo().frame(driver.findElement(By.xpath(".//iframe[@src='https://tssstrpms501.corp.trelleborg.com:12001/teamworks/process.lsw?zWorkflowState=1&zTaskId=4581&zResetContext=true&coachDebugTrace=none']"))); 

确保在切换到帧之前切换到默认内容:

 driver.switchTo().defaultContent(); driver.switchTo().frame(x); 

x可以是框架号,或者你可以做一个driver.findlement并使用你可用的任何选项,例如: driver.findElementByName("Name")

您可以使用Cssselect器或Xpath:

方法1:CSSselect器

 driver.switchTo().frame(driver.findElement(By.cssSelector("iframe[title='Fill Quote']"))); 

方法2:Xpath

 driver.switchTo().frame(driver.findElement(By.xpath("//iframe[@title='Fill Quote']"))); 

https://seleniumatfingertips.wordpress.com/2016/07/05/handling-frames-in-selenium-webdriver-with-java/

1)转到html视图

2)inputiframe,find你需要的帧并计算值并切换到使用

 oASelFW.driver.switchTo().frame(2); 

如果是第一帧,则使用oASelFW.driver.switchTo().frame(0);

如果是第二帧,则使用oASelFW.driver.switchTo().frame(1); 分别

最简单的方法就是这样。 如果它的框架,你可以右键单击该字段,如果你看到“选项卡中打开框架”的select做到这一点。

然后采取框架的URL,这就是你把你的Python脚本使用“driver.get( http://等等等等)

然后Selenium可以find你命名的元素。 这节省了我几个小时尝试所有在这里了解,但没有工作的build议。 我的问题是在一个框架。

我正在使用Linux,它使我可以右键单击打开框架,在另一个选项卡上单独打开框架。 我不使用Windows,所以不知道你是否会在你的右键菜单中得到这个选项。

Ganzarola