JavaScript : 通过 XPATH 将 ID 属性注入 <input> 标签
JavaScript : injecting ID attribute to an <input> tag by XPATH
我正在尝试使用 selenium 自动执行某些操作,问题是标签没有 ID,因此我正在使用 xpath 和 JS 找到控件:
document.evaluate('/html/body/header[2]/div[2]/div/div[1]/div[1]/div/div/div/form/fieldset/div[1]/input', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue
这是 chrome 控制台的响应:
<input> type="file" data-autosubmitoff="true" accept=".xls,.csv,.xlsx" name="File" class="hidden"></input>
这意味着它通过 xpath 找到了我的控件,现在我想注入一个 ID 以便我可以从 selenium 中引用它。
我试过这样做:
document.evaluate('/html/body/header[2]/div[2]/div/div[1]/div[1]/div/div/div/form/fieldset/div[1]/input', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.innerHTML='input id="UploadedFileFilter" type="file" data-autosubmitoff="true" accept=".xls,.csv,.xlsx" name="File" class="hidden">'
基本上用其中的 ID 重写整个标签,控制台相应地响应这个答案:
input id="UploadedFileFilter" type="file" data-autosubmitoff="true" accept=".xls,.csv,.xlsx" name="File" class="hidden">"
完美!但是当我查看 DOM 时,输入标签仍然是旧标签,我哪里错了?
谢谢。
与其直接编辑 HTML,不如尝试像这样设置 id 值:
var path = '/html/body/header[2]/div[2]/div/div[1]/div[1]/div/div/div/form/fieldset/div[1]/input';
var element = document.evaluate(path, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
element.id = 'UploadedFileFilter';
还值得注意的是,innerHTML
是元素中包含的 HTML。要编辑元素本身的 HTML,您可以使用 outerHTML
.
我正在尝试使用 selenium 自动执行某些操作,问题是标签没有 ID,因此我正在使用 xpath 和 JS 找到控件:
document.evaluate('/html/body/header[2]/div[2]/div/div[1]/div[1]/div/div/div/form/fieldset/div[1]/input', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue
这是 chrome 控制台的响应:
<input> type="file" data-autosubmitoff="true" accept=".xls,.csv,.xlsx" name="File" class="hidden"></input>
这意味着它通过 xpath 找到了我的控件,现在我想注入一个 ID 以便我可以从 selenium 中引用它。
我试过这样做:
document.evaluate('/html/body/header[2]/div[2]/div/div[1]/div[1]/div/div/div/form/fieldset/div[1]/input', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.innerHTML='input id="UploadedFileFilter" type="file" data-autosubmitoff="true" accept=".xls,.csv,.xlsx" name="File" class="hidden">'
基本上用其中的 ID 重写整个标签,控制台相应地响应这个答案:
input id="UploadedFileFilter" type="file" data-autosubmitoff="true" accept=".xls,.csv,.xlsx" name="File" class="hidden">"
完美!但是当我查看 DOM 时,输入标签仍然是旧标签,我哪里错了?
谢谢。
与其直接编辑 HTML,不如尝试像这样设置 id 值:
var path = '/html/body/header[2]/div[2]/div/div[1]/div[1]/div/div/div/form/fieldset/div[1]/input';
var element = document.evaluate(path, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
element.id = 'UploadedFileFilter';
还值得注意的是,innerHTML
是元素中包含的 HTML。要编辑元素本身的 HTML,您可以使用 outerHTML
.