11

こんにちは私はSeleniumWebDriverを使用して非表示の要素をクリックする方法や要素を無効にする方法を知りたいです。

私はセレン1でこれを以下のように行うことができることを知っています:

selenium.click(id="idOfHiddenField");

これは機能しますが、Selenium 2(WebDriver)では機能しません。jqueryを使用して非表示フィールドやJavaScriptを有効または表示したくありません。これは、ほとんどのテストがxpathを使用しているためです。

それとも、隠されたフィールドをクリックできる古いセレンをそのまま使用する必要がありますか?

4

3 に答える 3

16

を使用して問題を回避する簡単な方法がありJavascriptExecutorます。

例えば:

document.getElementsByClassName('post-tag')[0].click();

上記のJavaScriptは、このページの右上(質問の横)にある「Selenium」タグをクリックします(仮に非表示になっている場合でも)。

あなたがする必要があるのは次のJavascriptExecutorようなインターフェースを介してこのJS命令を発行することです:

(JavascriptExecutor(webdriver)).executeScript("document.getElementsByClassName('post-tag')[0].click();");

これは、JSサンドボックスと合成クリックイベントを使用してクリックアクションを実行します。WebDriverのユーザーアクティビティシミュレーションの目的は無効になりますが、ケースのようなニッチなシナリオで効果的に使用できます。

于 2012-08-21T06:18:44.057 に答える
1

答えは1つですが、複数の提案があります。

回答:セレンでバックアップされたドライバーを使用して、次のようなものを使用して非表示の要素をクリックします

Selenium selenium = new WebDriverBackedSelenium(driver, baseUrl);
selenium.clickAt("xpath=//area[@alt='Mercury']", clickPoint);

提案1:作成するものがたくさんあり、FOSSを探している場合に特別に偽のデータを作成するには、JMeterを使用してください。

提案2:JavaScriptがオフになっていることを確認するには、Firefoxインスタンス自体でJavaScriptを無効にします。

DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setJavascriptEnabled(false);
于 2012-08-20T20:43:13.883 に答える
0

それはあなたのニーズに合わないかもしれませんが、いくつかの別の解決策は要素を隠すためにCSSを変更することかもしれません。

Seleniumはそれ含む要素を検出しませんが、次の要素を検出します。display: none;

.hide {
    position: absolute;
    top: -99em;
    left: -99em;
}

jQuery.show/hide/toggle次に、アプリで使用するのではなく、を使用しますjQuery.toggleClass('hide', true/false/unset_to_toggle)

于 2013-10-09T15:06:22.253 に答える