selenium rc中的类强制转换异常

时间:2014-06-06 17:07:24

标签: selenium selenium-rc

我想从谷歌搜索获得前10个网址并尝试使用selenium rc将其记录到文件中我的代码如下

import java.util.List;
import java.io.PrintWriter;
import java.util.Collection;

import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;

import com.thoughtworks.selenium.DefaultSelenium;
import com.thoughtworks.selenium.Selenium;


public class GoogleSearch {

    public static void main(String[] args) {
        try 
        {
            int count = 0, sel_count=0, code_google_count=0;
            String link,sel_text="seleniumhq.org",code_google_text="code.google.com";
            List<WebElement> results;
            Selenium selenium = new DefaultSelenium("localhost",4444,"*firefox","http://www.google.co.in");
            selenium.start();
            selenium.open("/");
            selenium.type("q", "selenium");
            selenium.click("btnG");
            Thread.sleep(3000);
            Collection<WebElement> searchResults = ((WebElement) selenium).findElements(By.xpath("//ol[@id='rso']/li/div/h3/a"));
            PrintWriter out = new PrintWriter("filename.txt");
            for (WebElement webElement : searchResults) 
            {
                link = webElement.getAttribute("href");
                    out.println(link);
        }
            out.close();            
        } 
        catch (Exception e) {
            // TODO Auto-generated catch block
            System.out.print(e);
        }
    }
}

但是当我尝试这个时,我得到了一个像

这样的错误
java.lang.ClassCastException: com.thoughtworks.selenium.DefaultSelenium cannot be cast to org.openqa.selenium.WebElement

任何人都可以告诉我如何按照此错误继续

1 个答案:

答案 0 :(得分:0)

我不完全确定你在这里尝试了什么:

Collection<WebElement> searchResults = ((WebElement) selenium).findElements(By.xpath("//ol[@id='rso']/li/div/h3/a"));

您尝试将WebDriver类型的对象强制转换为WebElement类型的对象。这不是必要的。

这应该适合你:

List<WebElement> searchResults = selenium.findElements(By.xpath("//ol[@id='rso']/li/div/h3/a"));

正如已经指出的那样,您实际上正在使用DefaultSelenium,然后尝试针对它调用WebDriver方法。