我正在寻找从标签 for
获取输入属性。
下面是一些 HTML 示例:
<label for='input_6_36' >Label String</label>
<input name='input_36' id='input_6_36' type='text'>
上面是动态生成的,所以我无法硬编码 ID 来获取我的输入,因此以这种方式处理它的原因。
这是我的自定义 promise 方法。
wd.addPromiseChainMethod(
'inputFromLabel',
function(text) {
return this
.elementByXPath("//label[contains(., '" + text + "')]")
.getAttribute('for', function(val) {
console.log(val);
});
}
);
其中的实现如下:
it.only('test name', function(done) {
this.page
.inputFromLabel('Label String').type('test')
.nodeify(done);
});
所以按照我的习惯inputFromLabel
Promise 方法,我想从获取的 for
返回输入值。
我知道此时此刻,我的自定义方法不会返回输入。
我需要从当前记录到控制台的值中获取输入,但我似乎无法使用给定的 ID 来获取元素?
以下是我想遵循的一系列步骤:
- 从给定文本中获取标签(工作)
- 获取
for
标签中的属性(工作) - 使用 ID 从中获取值的输入(不起作用)
- 返回该输入以允许进一步链接(在本例中为 type() 方法)
如何返回输入?
最佳答案
试试这个,我认为这可能有用:
wd.addPromiseChainMethod(
'inputFromLabel',
function(text) {
var browser = this;
return browser
.elementByXPath("//label[contains(., '" + text + "')]")
.getAttribute('for')
.then(function(value) {
return browser.elementById(value);
});
});
关于javascript - 以 Selenium WD 作为 promise 从标签文本获取输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33647712/