【发布时间】:2016-09-07 07:18:09
【问题描述】:
所以我想使用以下代码从网站获取号码。我想要的是导入数字“Pieniądze”(21762)并替换“”和“PLN”所以它将是数字,但我在下面发布的代码不起作用。任何建议该解析中的错误在哪里?
int money;
money=Integer.parseInt((driver.findElement(By.xpath("/html/body/div[1]/div/div[5]/div[4]/table/tbody/tr/td[2]/text()[1]"))).getText().replace(" ", "").replace("PLN", ""));
运行: 在端口 24400 上启动 ChromeDriver 2.23.409699 (49b0fa931cda1caad0ae15b7d1b68004acd05129) 只允许本地连接。 线程“main” org.openqa.selenium.InvalidSelectorException 中的异常:无效选择器:xpath 表达式的结果“/html/body/div1/div/div[5]/div[4]/table/tbody/ tr/td[2]/text()1" 是:[对象文本]。它应该是一个元素。 (会话信息:chrome=53.0.2785.89) (驱动程序信息:chromedriver=2.23.409699 (49b0fa931cda1caad0ae15b7d1b68004acd05129),平台=Windows NT 6.3.9600 x86_64)(警告:服务器未提供任何堆栈跟踪信息) 命令持续时间或超时:23 毫秒 有关此错误的文档,请访问:http://seleniumhq.org/exceptions/invalid_selector_exception.html 构建信息:版本:'未知',修订:'2aa21c1',时间:'2016-08-02 14:59:43 -0700' 系统信息:主机:'Myszsoda',ip:'192.168.1.15',os.name:'Windows 8.1',os.arch:'amd64',os.version:'6.3',java.version:'1.8.0_101 ' 驱动程序信息:org.openqa.selenium.chrome.ChromeDriver 功能 [{applicationCacheEnabled=false, rotatable=false, mobileEmulationEnabled=false, networkConnectionEnabled=false, chrome={chromedriverVersion=2.23.409699 (49b0fa931cda1caad0ae15b7d1b68004acd05129), userDataDir=C:\Users\Soda\AppData\Local\Temp\scoped_dir6316_26092},需要Heap =true,databaseEnabled=false,handlesAlerts=true,hasTouchScreen=false,版本=53.0.2785.89,平台=WIN8_1,browserConnectionEnabled=false,nativeEvents=true,acceptSslCerts=true,locationContextEnabled=true,webStorageEnabled=true,browserName=chrome,takeScreenshot =true, javascriptEnabled=true, cssSelectorsEnabled=true}] 会话 ID:1627abc13cd518cda22e084f22304b80 *** 元素信息:{Using=xpath, value=/html/body/div1/div/div[5]/div[4]/table/tbody/tr/td[2]/text()@ 987654326@} 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:423) 在 org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:206) 在 org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:158) 在 org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:683) 在 org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:377) 在 org.openqa.selenium.remote.RemoteWebDriver.findElementByXPath(RemoteWebDriver.java:506) 在 org.openqa.selenium.By$ByXPath.findElement(By.java:361) 在 org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:369) 在 dunnoyet.DunnoYet.main(DunnoYet.java:132) C:\Users\Soda\AppData\Local\NetBeans\Cache\8.1\executor-sn-ps\run.xml:53:Java 返回:1 构建失败(总时间:20 秒)
【问题讨论】:
-
“不起作用”并没有告诉我们很多信息。如果您提供minimal reproducible example 也会有所帮助,其中包含重现问题作为文本 所需的最少HTML(当然还有代码)。
-
这里是错误
-
你还没有解决我的请求的任何其他方面。请注意,该错误似乎不言自明:您调用了
findElement,然后给了它一个不选择元素的 XPath 表达式... -
我“讨厌”的是糟糕的问题 - Stack Overflow 旨在成为高质量问题和答案的存储库。这意味着要花时间提出一个好问题,尽可能减少问题等等。请参阅codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question