2017-04-18 4 views
0

現在、私の会社のGrailsアプリケーションの自動テストを行っています。私はJavaScriptでセレンを使用しています。問題は、フォームに値が含まれているかどうかをチェックする必要があることですが、値をチェックしようとすると、長いエラーが発生します。ここで動作するようになっているコードです:Grailsアプリケーションでセレンを使用してテキストボックステキストを取得できません

console.log(
    driver.findElement(
     By.xpath("//*[@id='manual-order-mail-from-name']") 
    ).getAttribute("value") 
); 

は私が取得しようとしています要素はここにある:

<input 
    type="text" 
    class="form-control input-sm mail-from-input valid" 
    name="mailFromName" 
    id="manual-order-mail-from-name" 
    placeholder="Name" 
    required="" 
    aria-required="true" 
    aria-invalid="false"> 

そしてここでは、エラーメッセージです:

ManagedPromise { 
    flow_: 
    ControlFlow { 
    propagateUnhandledRejections_: true, 
    activeQueue_: 
     TaskQueue { 
     name_: 'TaskQueue::709', 
     flow_: [Circular], 
     tasks_: [Object], 
     interrupts_: null, 
     pending_: null, 
     subQ_: null, 
     state_: 'new', 
     unhandledRejections_: Set {} }, 
    taskQueues_: Set { [Object] }, 
    shutdownTask_: null, 
    hold_: 
     Timeout { 
     _called: false, 
     _idleTimeout: 2147483647, 
     _idlePrev: [Object], 
     _idleNext: [Object], 
     _idleStart: 461, 
     _onTimeout: [Function], 
     _timerArgs: undefined, 
     _repeat: 2147483647 } }, 
    stack_: 
    { Task: WebElement.getAttribute(value) 
     at thenableWebDriverProxy.schedule (/Users/takeshi/WebstormProjects/Regression/node_modules/selenium-webdriver/lib/webdriver.js:816:17) 
     at WebElementPromise.schedule_ (/Users/takeshi/WebstormProjects/Regression/node_modules/selenium-webdriver/lib/webdriver.js:1921:25) 
     at WebElementPromise.getAttribute (/Users/takeshi/WebstormProjects/Regression/node_modules/selenium-webdriver/lib/webdriver.js:2171:17) 
     at /Users/takeshi/WebstormProjects/Regression/TEST-11.js:43:92 
     at ManagedPromise.invokeCallback_ (/Users/takeshi/WebstormProjects/Regression/node_modules/selenium-webdriver/lib/promise.js:1384:14) 
     at TaskQueue.execute_ (/Users/takeshi/WebstormProjects/Regression/node_modules/selenium-webdriver/lib/promise.js:3092:14) 
     at TaskQueue.executeNext_ (/Users/takeshi/WebstormProjects/Regression/node_modules/selenium-webdriver/lib/promise.js:3075:27) 
     at asyncRun (/Users/takeshi/WebstormProjects/Regression/node_modules/selenium-webdriver/lib/promise.js:2935:27) 
     at /Users/takeshi/WebstormProjects/Regression/node_modules/selenium-webdriver/lib/promise.js:676:7 
     at process._tickCallback (internal/process/next_tick.js:103:7) name: 'Task' }, 
    parent_: null, 
    callbacks_: null, 
    state_: 'pending', 
    handled_: false, 
    value_: undefined, 
    queue_: null } 

にですユーザーがボタンをクリックしたときに表示されるモーダルの一部。私の推測では、これには関係がありますが、私には手がかりがありません。

私はすべてを検索して解決策を見つけることができないようです。これについて何か洞察があれば教えてください。

答えて

0

私は、getAttributeが返すものについて間違った理解をしていました。それは実際にあなたが捕まえてから出力する必要があるという約束を返します。同様に:

driver.findElement(By.xpath("//*[@id='manual-order-mail-from-name']")).getAttribute("value").then(function (success) {console.log("this is the text" + success);}, function(e) {console.log("this was the error" + e);});

関連する問題