すべてのGeb/SpockテストはFirefoxで完全に実行されていましたが、Chrome(v59)で試してみました。<dialog>とGeb/Selenium(Chromeのみ)
Firefoxの場合、私はwithAlert{}
またはwithConfirm{}
を使用していましたが、Chromeでは動作しません。
私はいくつかの意見を掘り下げて、そのダイアログがthis widgetによって管理されていることを知りました。だから私は<dialog>
へのアクセサーを私のページオブジェクトに作成しましたが、Chromeはまだそれと対話できません(ポップアップが表示されているかどうかを検出したり、閉じることはできません)。 displayed
を使用したり、テキストが表示されるのを待っていて何も処理されなかったりなど、いくつか試してみました。
jQueryに慣れていないので、ここで何か不足していますか?
<dialog class="qq-alert-dialog-selector">
<div class="qq-dialog-message-selector"></div>
<div class="qq-dialog-buttons">
<button type="button" class="qq-cancel-button-selector">Close</button>
</div>
</dialog>
そして、これは私が(私のページオブジェクトに)それにアクセスしようとする方法である:ここで
は私が対話しなければならないコードのサンプルです
alertPopUp {$("dialog", class:"qq-alert-dialog-selector")}
alertCloseButton {alertPopUp.children("div.qq-dialog-buttons").children("button")}
そして最後にどのように私はポップアップをテストしたいと思います:
when: "Trying to upload ..."
uploadFileButton = incorrect.absolutePath
then: "An alerting pop up occurs"
waitFor{alertPopUp.displayed}
when: "Closing the pop up"
alertCloseButton.click(SubmitAClaim)
then: "Number of uploaded files should not change"
uploadedElements.size() == initialUploadedFiles
誰でも助けることができますか?私はそれがポップアップ上または後ろのページに現在ある場合、それはクロムの焦点(私は意味とは何かを持っていることが推測
EDIT:。結局のところ
、それが問題と思われます。jQueryの(私は推測良いこと)にリンクされていない私たちは、ダイアログボックスが<dialog>
にopen attributeにオープンおかげであることを確認することができ、私はこのような何かを行っている:。
when: "Trying to upload ..."
uploadFileButton = incorrect.absolutePath
then: "A alerting pop up occurs"
waitFor {alertPopUp.getAttribute("open") == "true"}
しかし、私はまだ、ダイアログボックスと対話することはできません。私がCにしようとするときalertCloseButton
につけると、ElementNotVisibleException
が上がります。だから、ブラウザの焦点と関係していると思います。 私が試した:
withWindow{}
またはdriver.switchTo().window()
を利用できるが、唯一のウィンドウがメインの一つです。withFrame()
が、私はNoSuchFrameException
driver.switchTo().alert()
を得るが、それはNoAlertRaisedException
を上げるだから私は(...、警報、確認)誰かがクローム<dialog>
タグを検討する方法を知っていますかしら?
注:caniuse.comによると、Chromeは今の
<dialog>
と互換性が唯一のブラウザです。
私は、 'waitFor {alertPopUp.getAttribute(" open ")!= null}'を使ってポップアップが表示されているかどうかをテストすることができましたが、実際には正しいことを主張するのかどうかはわかりません。私はまだダイアログボックスのボタンをクリックすることにつきます。 Seleniumは 'ElementNotVisibleException'を発生させ、私はすでにチェックしました。唯一のものは( 'alertCloseButton.size()== 1')です。誰かがアイデアを持っているのですか、それともChromeDriver 2.30の問題としてログに記録しますか? – Saub