2017-02-08 12 views
0

文書では、これは非常に簡単ですが、セレンパックを使用してウェブサイトから変数を取得するのは問題があります(今のように)。問題は、私は(つまり、/除去した後の文字列/ INT()などのクライアントの正確数を見ることができますしたいパラメータなしのオブジェクトとして返します)(つまりはconsole.logである。オブジェクトをセレンの文字列に変換できません

var webdriver = require('selenium-webdriver'), 
By = webdriver.By, 
until = webdriver.until; 

var driver = new webdriver.Builder() 
.forBrowser('firefox') 
.build(); 

var number; 

driver.get('the website'); 
number = driver.findElement(By.xpath('/html/body/table/tbody/tr[4]/td[2]/table/tbody/tr/td[1]/table/tbody/tr[15]/td[2]')); //.toString is not working either, valueof too 
console.log(number); 

ページのHTMLそして、私は

HTML of the page (copying it to normal html code paste was taking quite long

What I see there and what number do I want

そして、私はにconsole.log

から取得するために探していた文字列

console.log(number.getText())を使用した後の出力。

ManagedPromise { 
    flow_: 
    ControlFlow { 
    propagateUnhandledRejections_: true, 
    activeQueue_: 
     TaskQueue { 
     name_: 'TaskQueue::3', 
     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: 431, 
     _onTimeout: [Function], 
     _timerArgs: undefined, 
     _repeat: 2147483647 } }, 
    stack_: 
    { Task: WebElement.getText() 
     at thenableWebDriverProxy.schedule (/home/soda/node_modules/selenium-webdriver/lib/webdriver.js:816:17) 
     at WebElementPromise.schedule_ (/home/soda/node_modules/selenium-webdriver/lib/webdriver.js:1921:25) 
     at WebElementPromise.getText (/home/soda/node_modules/selenium-webdriver/lib/webdriver.js:2185:17) 
     at getNumber (/home/soda/main.js:15:24) 
     at Object.<anonymous> (/home/soda/main.js:19:1) 
     at Module._compile (module.js:573:32) 
     at Object.Module._extensions..js (module.js:582:10) 
     at Module.load (module.js:490:32) 
     at tryModuleLoad (module.js:449:12) 
     at Function.Module._load (module.js:441:3) name: 'Task' }, 
    parent_: null, 
    callbacks_: null, 
    state_: 'pending', 
    handled_: false, 
    value_: undefined, 
    queue_: null } 

答えて

0

.getText()あなたが.then()を使用して約束から値を抽出するために必要なテキストを取得するためにので、約束を返します。

number = driver.findElement(By.xpath('/html/body/table/tbody/tr[4]/td[2]/table/tbody/tr/td[1]/table/tbody/tr[15]/td[2]')); //.toString is not working either, valueof too 

number.then(function(text){ 
console.log(text); //this will log the actual text. 
}); 
2

numberあなたがtoString()を使用するときは、オブジェクトの文字列ではなく、テキストを取得、WebElementです。テキストの使用のためgetText()

number = driver.findElement(By.xpath('/html/body/table/tbody/tr[4]/td[2]/table/tbody/tr/td[1]/table/tbody/tr[15]/td[2]')).getText(); 
console.log(number); 
+0

タスク:WebElementPromise.schedule_でWebElement.getText() thenableWebDriverProxy.scheduleで(/node_modules/selenium-webdriver/lib/webdriver.js:816:17) (/ node_modules /セレンwebdriverを/ LIB /webdriver.js:1921:25)WebElementPromise.getTextで (/node_modules/selenium-webdriver/lib/webdriver.js:2185:17)オブジェクトではgetNumber(/main.js:15:24で ) 。 (/main.js:19:1)at Module._compile(module.js:573:32)、Object.Module._extensions..js(module.js:582:10) at Module.load(module .js:490:32) at tryModuleLoad(module.js:449:12) Function.Module._load(module.js:441:3)の名前: 'Task'}、 – Myszsoda

+0

何も修正されませんでした。 (投稿全体を編集したくない、申し訳ありません) – Myszsoda

+0

@Myszsoda例外メッセージのように見えますが、その理由は含まれていません。これは完全なメッセージですか? – Guy

関連する問題