我试图学习硒网络驱动程序,但我遇到了一个问题。
我做了一个非常小的测试,看起来像这样:
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class Flows {
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver", "/Users/mn/Downloads/belikewater/chromedriver");
WebDriver driver = new ChromeDriver();
String baseUrl = "http://anywhere.c3a.dk/";
driver.get(baseUrl);
System.out.println(driver.getTitle());
driver.close();
}
}
我正在使用gradle,它看起来是这样的:
group 'com.cetrea'
version '1.0-SNAPSHOT'
apply plugin: 'java'
group = 'com.cetrea'
version = '1.0.0'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
compile('org.seleniumhq.selenium:selenium-java:2.41.0')
testCompile group: 'junit', name: 'junit', version: '4.12'
}
jar {
manifest{
attributes 'Main-Class': 'com.cetrea.flowtesting.Flows'
}
}
我要破例了
"main" java.lang.NoClassDefFoundError: org/openqa/selenium/WebDriver
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
at java.lang.Class.getMethod0(Class.java:3018)
at java.lang.Class.getMethod(Class.java:1784)
at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526)
Caused by: java.lang.ClassNotFoundException: org.openqa.selenium.WebDriver
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:338)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 7 more
我正在使用Mac OS,并尝试brew安装chromedriver,但我找不到它的路径,因为我对Mac也是非常陌生,所以我下载了一个zip并将chromedriver可执行文件复制到我的项目中。
也不记得如何获得完整的堆栈跟踪。.
**我一定是搞砸了什么。右键单击flows运行它,然后按run flows.main()会出现另一个错误,因此它至少找到了现在需要的东西。但我得到以下错误。
Starting ChromeDriver (v2.8.241036) on port 47434
[warn] kq_init: detected broken kqueue; not using.: Undefined error: 0
May 07, 2018 11:39:22 AM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: OSS
Exception in thread "main" org.openqa.selenium.WebDriverException: java.net.ConnectException: Failed to connect to localhost/0:0:0:0:0:0:0:1:47434
Build info: version: '3.11.0', revision: 'e59cfb3', time: '2018-03-11T20:26:55.152Z'
System info: host: 'cetreas-MacBook-Pro.local', ip: 'fe80:0:0:0:c9e:2c67:1d27:4e0b%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.13.3', java.version: '1.8.0_161'
Driver info: driver.version: RemoteWebDriver
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:92)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:545)
at org.openqa.selenium.remote.RemoteWebDriver.get(RemoteWebDriver.java:273)
at com.cetrea.flows.Flows.main(Flows.java:15)
Caused by: java.net.ConnectException: Failed to connect to localhost/0:0:0:0:0:0:0:1:47434
at okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.java:240)
at okhttp3.internal.connection.RealConnection.connect(RealConnection.java:158)
at okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:256)
at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:134)
at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:113)
at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:125)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:200)
at okhttp3.RealCall.execute(RealCall.java:77)
at org.openqa.selenium.remote.internal.OkHttpClient.execute(OkHttpClient.java:101)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:155)
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
... 3 more
Caused by: java.net.ConnectException: Connection refused (Connection refused)
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at okhttp3.internal.platform.Platform.connectSocket(Platform.java:125)
at okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.java:238)
... 23 more
它会像防火墙一样阻止它吗?这是一台我已经借了半年的mac电脑,所以我还没有完全习惯于使用它。
你怎么运行它?
我怀疑这不是硒的问题。它看起来很可疑,就像你正在运行这样的应用程序:java-jaryour-jar-name.jar
。但是你需要在类路径上提供所有需要的罐子。
一个简单的选择是添加以下行到您的gradle文件
apply plugin: 'application'
mainClassName = "com.cetrea.flowtesting.Flows"
然后以gradlerun
或者你可以让gradle把所有依赖性jar复制到你的某个地方,然后在你的课堂路径中提到它们。
如果下载了正确的驱动程序,则应成功运行。尽管您可能仍然需要更多的依赖项,如注释中提到的答案中所建议的。但是至少org.openqa.selenium.WebDriver应该已经在您的类路径上了。
我正在尝试以下元素: 以下是Java代码: 它找不到元素。请帮忙。谢谢。
我无法在我的网站中找到选项卡元素。下面是tab元素的html代码: 它也不在任何iframe中。我尝试复制它的xpath,但没有成功。任何帮助都是值得的。 错误记录如下: 线程“main”组织中出现异常。openqa。硒。NoSuchElementException:没有这样的元素:无法定位元素:{“方法”:“xpath”,“选择器”:“//a[@id='tab-t0-2']”}(会话信息:chr
问题内容: 我有以下XPath: 当我在XPath Checker(Firefox扩展)中试用此XPath时,它一直都能完美运行。但是当我在Selenium中执行以下操作时: 它不断给我以下日志错误: 我为解决这个问题而疯狂。有人看到我的代码行有任何错误吗? 问题答案: 该查询字符串不应该像这样(根据javadoc api)吗?
我面临的错误截图 上面的一行显示了错误,它表示。我在堆栈溢出上看到过这种问题,但解决方案对我没有帮助
帮助URL: URL[1]:http://i.stack.imgur.com/s5ZnK.png'此URL还显示删除按钮代码。 硒 IDE: 命令 : 目标单击和等待 : id=ctl00_Dialogproxy_deletenews_btnDelete 日志表值:[info]正在执行:| click and wait | id = CTL 00 _ dialog proxy _ delete n
问题内容: 我们正在升级到.NET Core,并且我们有一个使用Selenium进行某些任务的爬网引擎。我们使用它,并且在.NET 4.6.1中可以正常工作。 对于.NET Core,我们创建了一个控制台应用程序,并添加了以下软件包: 但是,当我运行代码时,出现以下错误: chromedriver.exe文件在当前目录或PATH环境变量上的目录中不存在。可以从http://chromedriver