- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用
browser.switchToFrame(iframeEl);
我可以切换到特定的 iframe 窗口,没关系 - 单击元素等都可以。
但是,无论出于何种原因,当 iframe
是当前上下文时使用 Selector
是行不通的。我怀疑这是因为 switchToFrame
是浏览器实例上的一个方法,我正在使用以这种方式导入的 Selector
函数:
import { Selector } from 'testcafe';
我的问题是 - 如果我想使用 testcafe 在 iframe 中选择一个特定元素(例如读取它的 HTML 属性) - 我应该如何处理它?我错过了什么吗?
更多详细信息:我正在使用远程 src
创建一个 iframe,稍后我会向该 iframe 注入(inject)一些 HTML、CSS 和 JavaScript。我 100% 确定 iframe
将具有与我请求的选择器匹配的 DOM 元素 - 但我仍然收到错误消息:无法获取有关节点的信息,因为指定的选择器不匹配 DOM 树中的任何节点。
我的代码大致是这样的:
const iframeEl = await Selector('a-iframe_inner[name="something"]');
if (await iframeEl.count === 0) {
await this.fBrowser.switchToMainWindow();
} else {
await this.fBrowser.switchToIframe(iframeEl);
}
const something = await Selector('.something');
在 await Selector
的一行代码中断。在我的其他测试中,我还访问了 iframe 并使用 await browser.click(someOtherThing);
点击了一些元素,它完美地工作。我还可以毫不费力地读取 iframe 的控制台状态。
我怀疑 iframe
元素的内容可能还没有准备好,但我想知道如何才能等到它准备好?我试过为 Selector
调用设置一个 timeout
选项,但它没有改变任何东西。您能否分享有关如何在切换到 iframe 上下文后延迟获取选择器的任何提示?
事实证明这确实是我的一个错误。对不起。对于 future 一代:Iframe 切换和使用选择器应该可以正常工作,至少在 TestCafe v0.20.1
中是这样。只需确保您的选择器匹配并且您确实处于 iframe 上下文中,而不仅仅是认为您在那里
最佳答案
无需执行任何特殊操作即可使 Selectors
在 iframe 中工作。它应该按预期工作。如果他们不希望使用此 form 在官方存储库中创建错误报告,如果您提供一个演示该问题的示例,我将不胜感激。至于你的问题,我无法在一个简单的例子中重现这个问题。测试页:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<h1>Click me</h1>
<iframe id="frame" src="http://example.com" style="width: 500px; height: 500px;"></iframe>
</body>
</html>
测试代码:
import { Selector } from 'testcafe';
fixture `Selector in iframe`
.page `../pages/index.html`;
const selector = Selector('h1');
test('test', async t => {
await t.click(selector);
console.log(await selector.innerText);
await t.switchToIframe('#frame');
await t.click(selector);
console.log(await selector.innerText);
});
所有点击都按预期工作,我能够成功获得 Selector
的 innerText
。此外,我建议您检查页面上真正存在的元素,Selector
引用现有元素并且该元素的宽度和高度大于零。
关于testing - 在 TestCafe 中切换到 iframe 上下文后找不到元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54807793/
例如,我有一个父类Author: class Author { String name static hasMany = [ fiction: Book,
代码如下: dojo.query(subNav.navClass).forEach(function(node, index, arr){ if(dojo.style(node, 'd
我有一个带有 Id 和姓名的学生表和一个带有 Id 和 friend Id 的 Friends 表。我想加入这两个表并找到学生的 friend 。 例如,Ashley 的 friend 是 Saman
我通过互联网浏览,但仍未找到问题的答案。应该很容易: class Parent { String name Child child } 当我有一个 child 对象时,如何获得它的 paren
我正在尝试创建一个以 Firebase 作为我的后端的社交应用。现在我正面临如何(在哪里?)找到 friend 功能的问题。 我有每个用户的邮件地址。 我可以访问用户的电话也预订。 在传统的后端中,我
我主要想澄清以下几点: 1。有人告诉我,在 iOS 5 及以下版本中,如果您使用 Game Center 设置多人游戏,则“查找 Facebook 好友”(如与好友争夺战)的功能不是内置的,因此您需要
关于redis docker镜像ENTRYPOINT脚本 docker-entrypoint.sh : #!/bin/sh set -e # first arg is `-f` or `--some-
我是一名优秀的程序员,十分优秀!