1

google.com をテストするために単純な NodeJS スクリプトを使用しています。ブラウザはphantomJSを使用。

var webdriver = require('selenium-webdriver');
var assert = require('assert');

var driver = new webdriver.Builder().
withCapabilities({
    browserName : "phantomjs"
}).
usingServer('http://127.0.0.1:4444/wd/hub').build();

//driver.manage().timeouts().implicitlyWait(60000);

driver.get('http://www.google.com');
driver.findElement(webdriver.By.xpath('//*[@id="gbqf"]')).sendKeys('webdriver');
driver.findElement(webdriver.By.name('btnG')).click();
driver.getTitle().then(function(title) {
    assert.equal("webdriver - Google Search", title);
 });

driver.quit();

を使用してスタンドアロン Selenium サーバーを実行する

> java -jar selenium-server-standalone-2.35.0.jar

コマンドを使用してスクリプトを並行して実行しますnode

次のエラーが表示されます

> timers.js:103
>             if (!process.listeners('uncaughtException').length) throw e;
>                                                                       ^ UnknownError: Error Message => 'Unable to find element with xpath
> '//*[@id="gbqf"]''  caused by Request =>
> {"headers":{"Accept":"application/json,
> image/png","Connection":"Keep-Alive","Content-Length":"45","Content-Type":"application/json;
> charset=utf-8","Host":"localhost:17476"},"httpVersion":"1.1","method":"POST","post":"{\"using\":\"xpath\",\"value\":\"//*[@id=\\\"gbqf\\\"]\"}","url":"/element","urlParsed":{"anchor":"","query":"","file":"element","directory":"/","path":"/element","relative":"/element","port":"","host":"","password":"","user":"","userInfo":"","authority":"","protocol":"","source":"/element","queryKey":{},"chunks":["element"]},"urlOriginal":"/session/440b8b90-0fc8-11e3-8024-5bdaea20ab82/element"}
> Build info: version: '2.35.0', revision: 'c916b9d', time: '2013-08-12
> 15:42:01' System info: os.name: 'Linux', os.arch: 'i386', os.version:
> '2.6.18-8.el5', java.version: '1.6.0_16' Driver info: driver.version:
4

2 に答える 2

0

google.com にアクセスすると、ローカルの google.co.uk サイトにリダイレクトされることがわかっているため、ページが完全に読み込まれていない可能性はありますか。

厳密にデバッグの目的で、findElement コマンドの前に 5 秒間スリープさせてください。それが機能する場合は、オブジェクトが画面に表示されるまで webdriverWait に置き換えます。

ただし、「フォーム」要素にキーを送信していることにも気付きました。これは機能しますか?入力フィールドにキーを送信したくないですか?

于 2013-08-28T11:06:59.137 に答える
0

コマンドを呼び出す前に、想定している URL に実際にアクセスしていることを確認しますfindElement

于 2014-08-18T19:51:22.897 に答える