gpt4 book ai didi

testing - 在 TestCafe 中切换到 iframe 上下文后找不到元素

转载 作者:行者123 更新时间:2023-12-01 12:07:50 24 4
gpt4 key购买 nike

原始问题:

使用

browser.switchToFrame(iframeEl);

我可以切换到特定的 iframe 窗口,没关系 - 单击元素等都可以。

但是,无论出于何种原因,当 iframe 是当前上下文时使用 Selector 是行不通的。我怀疑这是因为 switchToFrame 是浏览器实例上的一个方法,我正在使用以这种方式导入的 Selector 函数:

import { Selector } from 'testcafe';

我的问题是 - 如果我想使用 testcafe 在 iframe 中选择一个特定元素(例如读取它的 HTML 属性) - 我应该如何处理它?我错过了什么吗?

来自 GitHub 线程的更多详细信息:

更多详细信息:我正在使用远程 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);
});

所有点击都按预期工作,我能够成功获得 SelectorinnerText。此外,我建议您检查页面上真正存在的元素,Selector 引用现有元素并且该元素的宽度和高度大于零。

关于testing - 在 TestCafe 中切换到 iframe 上下文后找不到元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54807793/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com