javascript - 以 Selenium WD 作为 promise 从标签文本获取输入

标签 javascript selenium selenium-webdriver

我正在寻找从标签 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/

相关文章:

javascript - 如何使用 bootstrap 的 table table-hover 类突出显示数据列表中的一行

javascript - DevExtreme React 网格

java - Selenium 不使用 geckodriver 10.0 打开 firefox - 无法访问的浏览器异常

java - 在 java 应用程序中运行时使用 JUnit 格式化程序

javascript - 通过 Selenium 和 Java 使用 IEDriverServer 和 Internet Explorer 的 Microsoft Dynamics CRM 中的“XPathEvaluator 未定义”脚本错误

java - Selenium WebDriver 找不到元素

java - Webdriver 是否使用 RPC 调用。 webdriver如何控制浏览器?

javascript - 如何简化这段代码?

javascript - 如何在代码隐藏中获取 javascript 数组

python - 使用 Python Selenium 遍历表行并打印列文本