如何定位每次在 iMacros 中重新加载页面后名称都更改的表单输入字段
How to target form input fields whose names are changing everytime after reloading page in iMacros?
我一直在尝试在网站上定位表单,但猜测在录制超过 5 次后一次又一次地播放我的 iMacros 脚本后我意识到了什么。每次页面重新加载时,表单名称和输入名称都会更改。也没有其他属性可供我使用 HTML 定位,X/Y 位置记录模式也没有帮助......所以如果你们让我知道,请..如何让它工作?
这是我尝试针对的表单代码,但由于它每次都在变化,所以请如何完成:
<form action="" method="post">
<div class="uzuyjgec">
<input name="kAEuwLjmplRMZazfl/s9bW6YpnOxDDX2/2K0sobG" class="tbox" type="text">
</div>
<div class="tyqtmvha">
<input name="kwHKrLjmplTDzY/lMx57neltV9ErW378S1mX9h5S" class="tbox" type="text">
</div>
<input name="submit" value="Search!" class="tbox" type="submit">
</form>
我刚刚取出了输入的代码,但代码中有这么多输入太令人困惑了......!
这是实时状态的完整原始代码: http://jsfiddle.net/rt1ff6ab/
它在 jsfiddle 中显示的实时状态输入太多,但它在站点中仅显示 2 个输入,请截图为:
https://i.stack.imgur.com/451QH.png
根据 JSFiddle 和您显示的图像,看起来某些输入是隐藏的。您可以使用此代码获取可见输入:
var isVisible=function(node){
return (node.offsetWidth && node.offSetWidth >0) || (node.offsetHeight && node.offsetHeight>0);
};
var inputs=[].filter.call(document.querySelectorAll('input'),isVisible);
var usernameInput=inputs[0];
var hoursInput=inputs[1];
console.log(usernameInput,hoursInput);
该代码将页面上的第一个和第二个可见输入记录到控制台。
我分叉了你的JSFiddle并添加了CSS来隐藏除两个输入之外的所有输入:http://jsfiddle.net/28k59uhj/2/
更新:
如果不使用实际页面,我很难知道如何准确找到您正在寻找的元素。这是另一个尝试:
var isCandidateRegion=function(node){
return (node.innerText.indexOf('Username')>-1 && node.innerText.indexOf('Hours')>-1);
};
//Find the last table in th document that contains 'Username' and 'Hours'
var candidateRegions=[].filter.call(document.querySelectorAll('table'),isCandidateRegion);
var targetRegion=candidateRegions[candidateRegions.length-1];
var isVisible=function(node){
return (node.offsetWidth && node.offSetWidth >0) || (node.offsetHeight && node.offsetHeight>0);
};
var inputs=[].filter.call(targetRegion.querySelectorAll('input'),isVisible);
var usernameInput=inputs[0];
var hoursInput=inputs[1];
console.log(usernameInput,hoursInput);
JSFiddle: http://jsfiddle.net/28k59uhj/3/
如果只有一个表单有 2 个输入,你可以这样得到它,或者你可以做 document.form[0]
var inputs=document.getElementsByTagName('input');
inputs[0].value="username";
inputs[1].value="password";
<form>
<input type="text"/>
<input type="text"/>
</form>
相关文章:
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 而循环只设置php中输入字段中的第一个值
- 使用 Javascript 将字段输入除以 12
- 合并来自多个字段输入的搜索结果
- 使用 Javascript 实时打印字段输入数据
- 防止AngularJS中跨路由的字段输入重复
- 引用Iframe中的字段输入
- 禁用html5”;“必需”;不显示窗体部分时的字段输入属性
- JavaScriptFormValidation-需要特定的字段输入,但使用大写/小写
- 验证VF页面上所需字段输入的Javascript不起作用
- 在没有
- 使用Jquery将字段输入值作为查询字符串附加到url
- HTML5 jQuery选择所有日期字段'输入:date'
- 将字段输入复制到另一个字段输入
- 向图像添加字段(输入)
- 动态添加字段输入不会存储值并传递给控制器
- 向输入字段输入键击
- 我如何通过javascript验证datetime字段输入
- HTML如何将用户字段输入作为json对象发送
- 如何根据'select' onchange事件将值填充到第二个输入字段?输入