こんにちは、みんな、
愚かな質問をされている場合は、事前にお詫び申し上げます。
まず、このプロジェクトは実際にはselenium-wedriver-jsとは異なりますが、それは正しいですか? 名前はしばらくの間私を失望させました:(
第二に、webdriverioはselenium-webdriverjsとどのように比較されますか? selenium-webdriverjsは私には非常にjava-yに見えますが、一方で、webdriverio(あなたの)が非同期のものをどのように実行するかを完全に理解することはできません。
私は基本的にどちらかを選ぶのに助けが必要です。 ありがとう!
こんにちは@ dmitrym0
それは実際によく聞かれる愚かな質問ではありません! 私はそれにたくさん答えます。 基本的に両方とも同じ目的を持っています。 ノードのセレンランナーでもあるWD.jsというライブラリもあります。 それらはすべて同じように静かになりますが、開発のレベルと構文が異なります。
私はこれまで他のライブラリの1つを使用したことがないので、このライブラリについて説明します。 私たちは、使いやすく、高度に拡張可能で、すべての一般的なJavaScriptテストフレームワークと互換性のあるSeleniumランナーを提供しようとしています。 独自のチェーンAPIを使用して、すべての非同期コマンドを正しい順序で実行します。 このライブラリの特徴は、すべてのJSONWireプロトコルコマンドを便利なアクションコマンドでラップする
driver.get('http://www.google.com');
driver.findElement(webdriver.By.id('q')).sendKeys('webdriver');
driver.findElement(webdriver.By.id('btnG')).click();
browser
.get("http://www.google.com")
.elementById('q')
.sendKeys('webdriver')
.elementById('btnG')
.click()
現在このライブラリにあります:
client
.url('http://google.com')
.setValue('#q','webdriver')
.click('#btnG')
WebdriverIOにはほとんどすべてのプロトコルコマンドも実装されているため、標準のJSONWireプロトコルコマンドでも同じことができます。
client
.url('http://google.com')
.element('#q', function(err,res) {
client.elementIdValue(res.value.ELEMENT, 'webdriver');
})
.element('#btnG', function(err,res) {
client.elementIdClick(res.value.ELEMENT);
});
それぞれに独自のフレーバーがあり、どれが自分に最も合うかを決める必要があります。 これが少し明確になることを願っています。 テストの設定で問題が発生した場合は、サポートさせていただきます。 しかし、私はそれがかなり簡単で簡単であるべきだと思います。 テスト例のリストはここにあります。
乾杯
とてもいい答え@ christian-bromannこれは今readme.mdにリンクされているはずだと思います。
@ christian-bromann、これを説明してくれてありがとう。 とても助かります。
もう少し時間をお願いできれば。 私はselenium-webdriverjsで、現在のユースケースをうまく説明するスクリプトを作成しました。
これ:
これをwebdriverioで再現したいのですが、テキストの選び方がわからないようです。 それを手伝ってくれませんか。 ありがとう!
私の現在のselenium-webdriverjsのテキストは以下のとおりです。
var assert = require('assert'),
test = require('selenium-webdriver/testing'),
webdriver = require('selenium-webdriver');
var driver = new webdriver.Builder().
usingServer("http://localhost:9515").
withCapabilities(webdriver.Capabilities.chrome()).
build();
test.describe('selection', function() {
test.it('should be able to select two paragraphs', function() {
console.log("Request URL");
driver.get("http://en.wikipedia.org/wiki/Computer_programming");
var startParagraph, endParagraph;
driver.sleep(500).then(function() {
console.log("Getting all paragraphs");
var allPs = driver.findElements({tagName: 'p'}).then();
allPs.then(function(allParagraphs){
console.log("Got paragraphs.");
allParagraphs[1].then(function(startParagraphvalue){
startParagraph = startParagraphvalue
console.log("Resolved paragraph 1")
});
allParagraphs[5].then(function(endParagraphvalue){
endParagraph = endParagraphvalue
console.log("Resolved paragrpah 2" + endParagraphvalue);
});
});
}).then(function() {
console.log("Trying to select stuff now");
new webdriver.ActionSequence(driver).
keyDown(webdriver.Key.SHIFT).
click(startParagraph).
click(endParagraph).
keyUp(webdriver.Key.SHIFT).
perform().then(function(){
console.log("Done selection?");
});
});
});
});
WebdriverIOでは少し短くなります;-)
var assert = require('assert'),
client = require('webdriverjs').remote({desiredCapabilities:{browserName:'chrome'}});
client
.init()
.url('http://en.wikipedia.org/wiki/Computer_programming')
.elements('tag name','p',function(err,res) {
client
// move to first paragraph to the upper left corner (0,0)
.moveTo(res.value[0].ELEMENT, 0, 0)
// press shift key
.keys('Shift')
// do left click
.buttonPress('left')
// move to 5th paragraph to the lower right corner (1,1)
.moveTo(res.value[5].ELEMENT,1,1)
// do left click
.buttonPress('left')
// pause for 5000ms to be able to see selected text
.pause(5000);
})
.end();
まず、タグ名がp
すべての要素をクエリします。 res.value
オブジェクトには、要素の配列が含まれています。 次に、Shiftキーを使用してテキストを選択します。 プロトコルコマンドが実際に文書化されていないため、これは新しいユーザーにとって簡単ではないことを認めます。 webdriver.ioはまもなく公開され、それについて説明します。
私は本当にwebdriver.ioに傾倒し始めています!!!!
@ dmitrym0他に質問はありますか?
@wayneseymour素晴らしい! いいですね
これ以上の質問はないようです。 閉鎖。
@ christian-bromannにご協力いただき、ありがとうございます。
好奇心旺盛なあなたとadamwd.jsはどちらもソースで働いています。 2つのWebドライバーノードライブラリを継続する予定ですか?
WD.jsがどこに行くのかわかりません。ソースに参加するずっと前に、webdriver.ioの作業を開始しました。ここに入力するすべての作業は、ソースで行う作業とは何の共通点もありません。 私は自由な時間にこれをすべてやっていて、オープンソースの世界に貢献するためにそれを楽しんでいます;-)
回答ありがとうございます。プロジェクトは素晴らしく見えます。
@ christian-bromannこれはかなり古く、すでに解決されている可能性がありますが、一時停止を使用する例は、セレンの世界では本当に悪い習慣であり、決定的な結果につながりません。つまり、5秒かかることをどのように知っていますか。常に5秒になることを保証しますか?
.pause(5000);
より良いアプローチは、タイムアウト期間で再試行することです。つまり、どのくらいの時間がかかるかはわかりませんが、30秒間再試行を続けます。それでもない場合は、明らかに問題があります。
Webdriver IOを使用したこのタイプのアプローチのための何かがありますか?
ええ、WebdriverIOにはたくさんのwaitFor *コマンドがあります。 APIをチェックしてください
こんにちはクリスチャン、私は本当にあなたの助けが必要です。 自動化テストスタックの選択で非常に混乱しています。
オプション1)Webdriver.IO、SeleniumスタンドアロンおよびCucumber.io(JavaScriptアプローチ)AND
オプション2)WebdriverJS、Selenium JAR、およびCucumber JAR(Javaアプローチ)。
私たちチームは本当にかなりの時間を費やして経験を積んでいます-WebdriverIOは、Selenium、Cucumber、Webdriver(javaアプローチ)と比較して十分に成熟していません。
私はインターネットであなたのたくさんの助けとコメントを見ました、そしてここでもあなたのコメントを本当に感謝します。
こんにちは、みんな、
私はこのスレッドを通過しましたが、どのフレームワークを選択するかまだ混乱しています。
私はAndroidとiOSの両方でモバイルアプリケーションをテストし、実際のデバイス/シミュレーターでもテストします。
上下左右にスクロールする機能が必要になります。
提案してください!
ありがとう
しかし、私はまだどのフレームワークを選ぶべきか混乱しています。
私はここで何を言うと思いますか? WebdriverIOの使用をお勧めします。 それはすべてをサポートします。
わかった。 ありがとう@ christian-bromann :)
TouchAction関数のサンプルコードはありますか?
最も参考になるコメント
こんにちは@ dmitrym0
それは実際によく聞かれる愚かな質問ではありません! 私はそれにたくさん答えます。 基本的に両方とも同じ目的を持っています。 ノードのセレンランナーでもあるWD.jsというライブラリもあります。 それらはすべて同じように静かになりますが、開発のレベルと構文が異なります。
私はこれまで他のライブラリの1つを使用したことがないので、このライブラリについて説明します。 私たちは、使いやすく、高度に拡張可能で、すべての一般的なJavaScriptテストフレームワークと互換性のあるSeleniumランナーを提供しようとしています。 独自のチェーンAPIを使用して、すべての非同期コマンドを正しい順序で実行します。 このライブラリの特徴は、すべてのJSONWireプロトコルコマンドを便利なアクションコマンドでラップする
セレン-webdriverjs :
WD.js
現在このライブラリにあります:
WebdriverIOにはほとんどすべてのプロトコルコマンドも実装されているため、標準のJSONWireプロトコルコマンドでも同じことができます。
それぞれに独自のフレーバーがあり、どれが自分に最も合うかを決める必要があります。 これが少し明確になることを願っています。 テストの設定で問題が発生した場合は、サポートさせていただきます。 しかし、私はそれがかなり簡単で簡単であるべきだと思います。 テスト例のリストはここにあります。
乾杯