当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()
有多个重载。
-
driver.switchTo().frame(name_or_id)
这里你的iframe
没有id或name,所以不适合你。 -
driver.switchTo().frame(index)
这是最后的select,因为使用索引不够稳定,你可以想像。 如果这是您页面中唯一的iframe,请尝试使用driver.switchTo().frame(0)
-
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']")));
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