我正在尝试从Selenium webdriver打开Chrome浏览器,但我没有这样做。起初我尝试从同一个程序打开Chrome和Firefox。 Firefox浏览器工作得很好,而我得到的错误与ChromeDriver exe文件不存在有关。我下载了ChromeDriver文件,并将其添加到外部JAR中,并使用System.setProperty(
方法调用它。
以下是原始代码:
package test.selenium;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class Selenium_test {
public static void main(String[] args) {
FirefoxDriver dr1=new FirefoxDriver();
FirefoxDriver dr2=new FirefoxDriver();
System.setProperty("webdriver.chrome.driver", "C://chromedriver.exe");
ChromeDriver dr3=new ChromeDriver();
ChromeDriver dr4=new ChromeDriver();
dr1.get("http://google.com");
dr2.get("http://northeastraveller.com");
dr3.get("http://quora.com");
dr4.get("http://facebook.com");
// TODO Auto-generated method stub
}
}
我将Chrome部分分成了一个名为“Chrome_test”的单独程序,其代码如下
package test.selenium;
import org.openqa.selenium.chrome.ChromeDriver;
public class Chrome_Test{
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver", "C://chromedriver.exe");
ChromeDriver dr3=new ChromeDriver();
ChromeDriver dr4=new ChromeDriver();
dr3.get("http://quora.com");
dr4.get("http://facebook.com");
// TODO Auto-generated method stub
}
}
现在我收到以下错误:
错误:无法找到或加载主类test.selenium.Chrome_Test
我检查了类路径变量,所有似乎都在位。我在这里缺少什么?
答案 0 :(得分:2)
你最好放两个反斜杠,如:
System.setProperty("webdriver.chrome.driver", "C:\\ChromeDriver\\chromedriver.exe");
它会起作用。
答案 1 :(得分:0)
使用反斜杠(\)更改镶边驱动程序属性行,它可以正常工作。
System.setProperty("webdriver.chrome.driver", "C:\\ChromeDriver\\chromedriver.exe");
答案 2 :(得分:0)
我编写的代码会自动下载并安装最新的ChromeDriver
到项目根目录(如果没有找到)。这样您就可以收到ChromeDriver
实例,而不必担心chromedriver.exe
文件。您可以根据自己的需要进行调整。您仍然需要在项目中包含Selenium
libraries。对于我下面的ChromeDriverFactory
课程,您还需要Apache Commons IO
和Zip4J
。
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import net.lingala.zip4j.core.ZipFile;
import net.lingala.zip4j.exception.ZipException;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.io.IOUtils;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class ChromeDriverFactory
{
private static String chromeDriverRepository = "http://chromedriver.storage.googleapis.com/";
public static WebDriver getChromeDriver() throws MalformedURLException,
IOException, ZipException
{
String chromeDriverFileName = "chromedriver.exe";
File chromeDriverFile = new File(chromeDriverFileName);
if (!chromeDriverFile.exists())
{
installChromeDriver();
}
setChromeDriverProperty(chromeDriverFileName);
return new ChromeDriver();
}
private static void setChromeDriverProperty(String chromeDriverFileName)
{
System.setProperty("webdriver.chrome.driver", chromeDriverFileName);
}
private static void installChromeDriver() throws IOException,
MalformedURLException, ZipException
{
String newestVersion = getNewestVersion();
String targetFile = "chromedriver_win32.zip";
String downloadUrl = chromeDriverRepository + newestVersion + "/"
+ targetFile;
String downloadFileName = FilenameUtils.getName(downloadUrl);
File downloadFile = new File(downloadFileName);
String projectRootDirectory = System.getProperty("user.dir");
FileUtils.copyURLToFile(new URL(downloadUrl), downloadFile);
ZipFile zipFile = new ZipFile(downloadFile);
zipFile.extractAll(projectRootDirectory);
FileUtils.deleteQuietly(downloadFile);
}
private static String getNewestVersion() throws MalformedURLException,
IOException
{
String newestVersionUrl = chromeDriverRepository + "LATEST_RELEASE";
InputStream input = new URL(newestVersionUrl).openStream();
return IOUtils.toString(input);
}
}