设置浏览器驱动
手动创建一个存放浏览器驱动的目录,如: C:\driver , 将下载的浏览器驱动文件(例如:chromedriver、geckodriver)丢到该目录下。
我的电脑–>属性–>系统设置–>高级–>环境变量–>系统变量–>Path,将“C:\driver”目录添加到Path的值中。
;C:\driver
设置浏览器驱动
验证不同的浏览器驱动是否正常使用
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.edge.EdgeDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.opera.OperaDriver;
import org.openqa.selenium.phantomjs.PhantomJSDriver;
WebDriver driver = new ChromeDriver(); //Chrome浏览器
WebDriver driver = new FirefoxDriver(); //Firefox浏览器
WebDriver driver = new EdgeDriver(); //Edge浏览器
WebDriver driver = new InternetExplorerDriver(); // Internet Explorer浏览器
WebDriver driver = new OperaDriver(); //Opera浏览器
WebDriver driver = new PhantomJSDriver(); //PhantomJS
版本问题
部分浏览器当浏览器版本和驱动的版本不一致时会出现类似这种错误。
检查并比对浏览器的版本是否和驱动的版本一致。
例如我装了http://chromedriver.storage.googleapis.com/85.0.4183.38/ 但我的浏览器 Google Chrome 是 84.0.4147.125 的版本 就会出现像下面的错误。去重新下载了http://chromedriver.storage.googleapis.com/84.0.4147.30/ 实测可成功运行。
remote stacktrace: Backtrace:
Ordinal0 [0x00BC5F73+2449267]
Ordinal0 [0x00AF8361+1606497]
Ordinal0 [0x009EF969+522601]
Ordinal0 [0x009805F3+67059]
Ordinal0 [0x0097CD92+52626]
Ordinal0 [0x0099C127+180519]
Ordinal0 [0x0099BF2D+180013]
Ordinal0 [0x00999E5B+171611]
Ordinal0 [0x00981DD8+73176]
Ordinal0 [0x00982E50+77392]
Ordinal0 [0x00982DE9+77289]
Ordinal0 [0x00B0D8D7+1693911]
GetHandleVerifier [0x00C64036+522726]
GetHandleVerifier [0x00C63D74+522020]
GetHandleVerifier [0x00C79187+609079]
GetHandleVerifier [0x00C648A6+524886]
Ordinal0 [0x00B05CBC+1662140]
Ordinal0 [0x00B0F23B+1700411]
Ordinal0 [0x00B0F3A3+1700771]
Ordinal0 [0x00B25215+1790485]
BaseThreadInitThunk [0x754E0419+25]
RtlGetAppContainerNamedObjectPath [0x771066DD+237]
RtlGetAppContainerNamedObjectPath [0x771066AD+189]
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
at org.openqa.selenium.remote.W3CHandshakeResponse.lambda$errorHandler$0(W3CHandshakeResponse.java:62)
at org.openqa.selenium.remote.HandshakeResponse.lambda$getResponseFunction$0(HandshakeResponse.java:30)
at org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession$0(ProtocolHandshake.java:126)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
at java.base/java.util.Spliterators$ArraySpliterator.tryAdvance(Spliterators.java:958)
at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:127)
at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:502)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:488)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
at java.base/java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:150)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:543)
at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:128)
at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:74)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:136)
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:213)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:131)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:181)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:168)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:157)
at com.artup.pdf.handler.TextEditHandler.DOMToImage(TextEditHandler.java:527)
at com.artup.pdf.handler.TextEditHandler.buildTextEdit(TextEditHandler.java:117)
at com.artup.pdf.service.generator.PDFGeneratorService.createPDF(PDFGeneratorService.java:261)
at com.artup.pdf.service.generator.PDFGeneratorService.createPDF(PDFGeneratorService.java:1423)
at com.artup.pdf.service.generator.PDFGeneratorService.createPDFProxy(PDFGeneratorService.java:1292)
at com.artup.pdf.service.generator.PDFGeneratorService$$FastClassBySpringCGLIB$$93f4dc27.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:771)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749)
at org.springframework.aop.interceptor.AsyncExecutionInterceptor.lambda$invoke$0(AsyncExecutionInterceptor.java:115)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)