2

我有以下 HTML:

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

我在 WebDriver 中使用 java 单击“Google 搜索”按钮的以下代码运行良好:

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

我想使用 jQuery 和 WebDriver 来单击按钮。我该怎么做?

我做了以下(使用TestNG框架在eclipse中运行测试):

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

不幸的是,显示了以下错误:

org.openqa.selenium.WebDriverException:$ 未定义(警告:服务器未提供任何堆栈跟踪信息)命令持续时间或超时:23 毫秒

我上面的代码有什么问题?

4

3 回答 3

1

WebDriver 显然没有使用 jQuery 扩展,因此 '$' 不在名称空间中。您可以将缩小的 jQuery.js 加载到字符串中,然后将其作为测试的一部分进行评估 - 这会将“$”添加到页面的命名空间......

于 2012-08-23T07:08:58.183 回答
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 回答
0

这也可以使用 List of classes 来解决

列表 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 回答