如何用New Relic Synthetic点击iframe内按钮?遇参数错误求助
解决New Relic Synthetic点击iframe内按钮的报错问题
错误原因分析
你遇到的invalidArgumentError: invalid argument: 'id' can not be string错误,核心问题是代码中引号转义字符导致定位参数异常,同时固定时长的sleep也可能引发元素未加载完成的问题。
修正后的代码示例
.then(function(){ // 切换到目标iframe,确认'tool_content'是iframe的id或name return $browser.switchTo().frame('tool_content'); }) .then(function(){ // 替换固定sleep为智能等待,直到目标元素出现 return $browser.wait(function() { return $browser.findElements(By.id("moreIns")).then(function(elements) { return elements.length > 0; }); }, 10000); // 等待10秒,可按需调整 }) .then(function () { log('clickElement "Course Home Manager"'); // 传递纯字符串id,移除转义字符,指定超时时间 return $browser.waitForAndFindElement(By.id("moreIns"), 30000); }) .then(function (el) { return el.click(); })
关键调整点
- 移除引号转义:把代码中的
"替换为实际双引号",确保By.id接收的是纯id字符串(如"moreIns"而非带转义的"moreIns")。 - 替换固定sleep为智能等待:避免依赖固定时长的sleep,改用
$browser.wait()等待目标元素出现,适配不同页面加载速度。 - 明确超时时间:若
DefaultTimeout未定义,直接传入数字(如30000代表30秒),避免变量未初始化问题。 - 验证iframe切换:确认
tool_content是目标iframe的id或name,若不确定,可尝试用索引$browser.switchTo().frame(0)(第一个iframe)测试。
内容的提问来源于stack exchange,提问作者Supun Senanayake
相关产品推荐
相关产品推荐

