getText不返回值,但在setValue

时间:2017-08-24 20:14:21

标签: javascript nightwatch.js

所以我手头有以下问题;

我想从registrationNumber获取文本。所以我定义了一个var regNumber = null;

我在global.js中定义了var,因为我希望在不同的pageObjects和特定函数之外的整个测试中访问var。

当它获取文本并且它需要在模板搜索中使用setValue填充文本时它返回Object Object,所以我尝试使用toString但是相同。 这是我需要使用的函数才能使用var

module.exports = {

 var regNumber =  browser.globals;

页面对象

        openSearch: function(browser, regNumber ) {
        browser.perform(function () {
        browser.waitForElementVisible('.registrationnumber-search input', 3000)
        browser.setValue('.registrationnumber-search input', regNumber )

            return this;
        })

测试

.continueButton()
browser.getText('xpath', '//*[@id="wizardDetailsTab"]/div[1]/div/div[1]/h4/span[2]', function (result) {
                        regNumber = result.value
                        console.log(result.value)
                    })

 certificateEditor
        .quickMenu("Permit")
        .createNewItem("template")

    permit
        .openSearch(browser, regNumber)

console.log(result.value)返回我想要的值,但是当我想在setValue中使用该值时,它不起作用。如果我创建一个函数并在该范围内执行getText,它将填充我需要的内容。 BUt我想知道为什么当我这样尝试时它不起作用。 提前谢谢!

2 个答案:

答案 0 :(得分:1)

页面对象中的

 openSearch: function(regNumber ) {
      return this.perform(function (done) {
        this.api.waitForElementVisible('.registrationnumber-search input', 3000)
        .setValue('.registrationnumber-search input', regNumber )
         done(); //prevent timeout issue
        })

将getText()之后的代码移入其中。

var permit=client.page.permit() // replace .permit() as .yourpageobjectjsname() 
.....
.continueButton()
browser.getText('xpath', '//*[@id="wizardDetailsTab"]/div[1]/div/div[1]/h4/span[2]', function (result) {
                        regNumber = result.value
                        console.log(result.value)
                        certificateEditor
                                         .quickMenu("Permit")
                                         .createNewItem("template")

                         permit
                                         .openSearch(regNumber)
})

答案 1 :(得分:0)

从您看来,当您正在寻找字符串时,您正在返回一个对象。我想你只需要指定你想要的对象。

browser.globals 

应该是这样的     browser.globals.value或browser.globals.text

您的browser.globals是返回的对象。您必须指定希望该对象返回的键/值对。