IDを使用してCodeceptionを使用してIFrameに切り替えるにはどうすればよいですか?実際には、IFrameの名前は使用できますが、IDは使用できません-> Codeception SwitchToIFrame
IFrameの例:
<iframe id="iframeToolbar" src="link" frameborder="0" style="position: fixed; left: 0px; top: 0px; z-index: 998; width: 940px;" scrolling="no" width="100px" height="100%"></iframe>
コードセプションの例:
<?php
# switch to iframe
$I->switchToIFrame("another_frame");
# switch to parent page
$I->switchToIFrame();
それはおそらくCodeception <-> Facebook Webdriver接続の問題ですか?
編集:Codeceptionを再インストールし、クイックステップガイドに従いました。結果-問題は同じです:CodeceptionとFacebookWebdriverは一緒に動作することを望んでいません。私のコード受容コード
accept.suite.yml:
actor: AcceptanceTester
modules:
enabled:
- \Helper\Acceptance
- WebDriver:
url: https://xxxxxxxxxxxxxx.com
browser: chrome
window_size: maximize
clear_cookies: true
codeception.yml:
paths:
tests: tests
output: tests/_output
data: tests/_data
support: tests/_support
envs: tests/_envs
actor_suffix: Tester
extensions:
enabled:
- Codeception\Extension\RunFailed
settings:
colors: true
この問題が発生しました。GooglereCaptchaを含むページをテストしています... reCaptchaは独自のiframe内にあり、そのiframeはサードパーティのコードによって生成されるため、名前属性を制御できません(少なくともその場合)最初に生成された)。
私がやったことは、他のものに基づいてiframeを見つけることができるjavascriptスニペットを実行し、それにIDを与えて、CodeceptionWebdriverがそれに切り替えることができるようにすることでした。
public function _clickOnCaptcha(AcceptanceTester $I)
{
// give the recaptcha iframe a name so codeception webdriver can switch to it
$recaptcha_frame_name = 'recaptcha-frame';
$I->executeJS("$('.g-recaptcha iframe').attr('name', '$recaptcha_frame_name')");
$I->switchToIFrame($recaptcha_frame_name);
$I->see('not a robot');
$I->seeElement('.rc-anchor');
$I->click(['id' => 'recaptcha-anchor']);
$I->switchToIFrame(); // switch back to main window
}
私は含まれている要素を制御できたので、この場合、クラスを持つ要素内に含まれていg-recaptcha
ます...したがって、jqueryを使用してその要素内のiframeを検索し$('.g-recaptcha iframe')
、それにname属性を付けます:.attr('name', '$recaptcha_frame_name')
。
次に、Codeceptionを使用してそれに切り替え、キャプチャチェックボックスをクリックします。 $I->switchToIFrame($recaptcha_frame_name); $I->click(['id' => 'recaptcha-anchor']);
次に、完了したら、メインフレームに切り替えて、フォームを送信できるようにします。 $I->switchToIFrame(); // switch back to main window
注意:ここで指定されているように、テスト環境でreCaptchaテストキーを使用しているため、実際にキャプチャの解決を要求されることはありません。
https://developers.google.com/recaptcha/docs/faq
次のテストキーを使用すると、常にCAPTCHAが取得されず、すべての検証リクエストに合格します。
サイトキー:6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhIシークレットキー:6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe reCAPTCHAウィジェットは、テスト目的のみであることを示す警告メッセージを表示します。これらのキーを本番トラフィックに使用しないでください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加