(MS动力学测试自动化)不能切换到iframe中,帧自动地改变

问题描述 投票:0回答:3

我想切换帧MS动态使用硒的webdriver 365系统。我将解释下面的问题之一。下面是HTML元素代码:element code here

通常,我曾经使用ID = contentIFrame0或1,并且帧被切换细。问题是,MS动态生成动态地的内部框架,通常包含最多3个I帧(contentIFrame0,contentIFrame1,contentIFrame2),但事实是,你永远不知道他们将是2或1的网页上,为什么,所以如果你今天使用他们直接的一个 - 明天你的测试将失败,因为的变化。好像我有所有的时间切换到最后一帧,但它的工作原理随机,因为有时候是第一个包含元素和另一个脚本。我试着做其他的事情,是切换到一个iframe中具有的属性:风格=能见度:可见的(在此之前,我试图在控制台打印许多可见帧司机如何看待 - 但写的所有的时间0)。另外,如果我尝试在多少I帧出现在页面上的控制台打印 - 计数器为2,但我可以看到3。

如果有任何人谁试图自动MS动力学365和有同样的问题?我可能已经discribed所有的情况下,也许你会发现逻辑和差异性。

selenium selenium-webdriver iframe automated-tests dynamics-365
3个回答
0
投票

我不知道这是否在你的情况,但请给它一个尝试。

如果你知道在框架中的元素就是你正在尝试切换然后使用CSS选择器或XPath的一个

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

0
投票

它很难以这种方式测试微软不保证所呈现的对象将保持不变。这可能是今天的3帧,但在下一版本的开发团队可能会引入更多或更少,与DOM直接不再支持工作。

我会极力推荐以下框架的测试动态:https://github.com/Microsoft/EasyRepro

这将有助于提升你的测试一个级别,它引入一个抽象层,以减少需要直接通过隔离所有的低层次工作的框架代码与HTML工作。

以下是有关EasyRepro一个伟大的职位:http://www.itaintboring.com/dynamics-crm/easy-repro-what-is-it/

祝好运


0
投票

这个XPath找到主面板中可靠地

//iframe[contains(contains(@id,'contentIFrame') and contains(@style,'visible')]

注:不适用于动态365统一的接口,它具有完全不同的DOM。

© www.soinside.com 2019 - 2024. All rights reserved.