使用Selenium WD作为承诺从标签文本获取输入

时间:2015-11-11 09:34:34

标签: javascript selenium selenium-webdriver

我希望从标签<label for='input_6_36' >Label String</label> <input name='input_36' id='input_6_36' type='text'>属性中获取输入。

以下是一些示例HTML:

wd.addPromiseChainMethod( 'inputFromLabel', function(text) { return this .elementByXPath("//label[contains(., '" + text + "')]") .getAttribute('for', function(val) { console.log(val); }); } );

以上是动态生成的,因此我无法对ID进行硬编码以获取输入,因此以这种方式接近它。

所以这是我的自定义承诺方法。

it.only('test name', function(done) {
    this.page
        .inputFromLabel('Label String').type('test')
        .nodeify(done);
});

其中如下所示:

inputFromLabel

因此,使用我的自定义for promise方法,我想从提取的for值返回输入。

我知道此时此刻,我的自定义方法不会返回输入。

我需要从我当前登录到控制台的值中获取输入,但是我似乎无法使用给定的ID从它的ID中获取元素?

以下是我认为我想遵循的一系列步骤:

  • 从给定文本中获取标签(工作)
  • 从标签(工作)
  • 获取i[1]属性
  • 使用ID(不工作)
  • 从此获取输入值
  • 返回该输入以允许进一步链接(在本例中为type()方法)

如何退回输入?

1 个答案:

答案 0 :(得分:1)

试试这个我觉得这可行:

wd.addPromiseChainMethod(
'inputFromLabel',
function(text) {

    var browser = this;

    return browser
            .elementByXPath("//label[contains(., '" + text + "')]")
            .getAttribute('for')
            .then(function(value) {
                return browser.elementById(value);
            });
});