【发布时间】:2015-10-02 21:18:54
【问题描述】:
我正在使用fancybox2 创建 iframe,但我看不到设置所创建 iframe 的 ID 的方法,这使我无法使用 php-webdriver 和 selenium 来测试 iframe 的内容.
简化版代码:
<a href="iframe.html" class="various fancybox.iframe">iframe</a>
<script>
$(document).ready(function() {
$(".various").fancybox()
});
</script>
这可行,但使用 Chrome 的检查器,iframe(这次)生成的 ID 为
fancybox-frame1443817733402,这似乎是随机的。这意味着当我尝试使用 php-webdriver 到 switch to this frame(点击链接创建 iframe)时,我无法预测要传入的框架 ID:
$frame_id = 'fancybox-frame1443817733402'; // can't predict this in advance
$driver->switchTo()->frame($frame_id);
iframe 始终使用 fancybox-iframe 类生成,但调用
$iframe = $driver->findElement(WebDriverBy::class("fancybox-iframe"))
什么都不返回。
我也尝试过使用 fancybox2 的 afterLoad 回调来尝试显式设置 iframe 的 ID,然后再尝试通过此 ID 切换到框架,但这也失败了(我认为因为 current 是一个对象,而不是一个元素?)
$(".various").fancybox({
afterLoad: function(current, previous) {
//console.log(current);
current.attr('id', 'rob');
}});
有没有办法明确设置 iframe 的 ID,以便我可以通过 selenium/webdriver 切换到它?或者有更简单的方法吗?
【问题讨论】:
标签: php selenium selenium-webdriver fancybox-2