2

私は次のHTMLを持っています:

<button class="gbqfba" name="btnK" aria-label="Google Search" id="gbqfba"><span id="gbqfsa">Google Search</span></button>

「Google 検索」ボタンをクリックするための次のコードは、WebDriver で Java を使用してうまく機能しています。

driver.findElement(By.id("gbqfb")).click();

ボタンをクリックするために WebDriver で jQuery を使用したいと考えています。どうすればいいですか?

私は次のことを行いました(テストはTestNGフレームワークを使用してEclipseで実行されました):

WebDriver driver = new FirefoxDriver();
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("$('#gbqfba').click();");

残念ながら、次のエラーが表示されました。

org.openqa.selenium.WebDriverException: $ が定義されていません (警告: サーバーはスタックトレース情報を提供しませんでした) コマンド期間またはタイムアウト: 23 ミリ秒

上記のコードの何が問題になっていますか?

4

3 に答える 3

1

次のコードはうまく機能します:

WebDriver driver = new FirefoxDriver();
JavascriptExecutor jse = (JavascriptExecutor)driver;
URL jqueryUrl = Resources.getResource("jquery-1.8.2.min.js");
String jqueryText = Resources.toString(jqueryUrl, Charsets.UTF_8);
jse.executeScript(jqueryText);
jse.executeScript("$('#gbqfba').click();");
于 2012-11-01T09:21:59.567 に答える
1

WebDriver は明らかに jQuery 拡張機能を使用していないため、'$' は名前空間にありません。縮小された jQuery.js を文字列にロードし、テストの一部として評価することができます。これにより、ページの名前空間に「$」が追加されます...

于 2012-08-23T07:08:58.183 に答える
0

これは、クラスのリストを使用して解決することもできます

List w = driver.findElements( By.cssSelector("button.gbqfba"));

    for(WebElement s1: w)
    {
        String s2= s1.getText();
        System.out.println(s2);

        if(s2.contentEquals("Google Search"))
        {
            s1.click();   
            break;
        }
    }
于 2013-06-12T13:18:38.330 に答える