【问题标题】:Can't import number from html site code无法从 html 站点代码导入号码
【发布时间】: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

标签: java html selenium


【解决方案1】:

您的xpath 返回String,而不是WebElement。从结果中的xpathgetText() 方法中删除/text()[1]

driver.findElement(By.xpath("...")).replace(" ", "")...

【讨论】:

  • 它部分解决了问题,现在的问题是,您能帮忙从中间获取数字吗?线程“main”java.lang.NumberFormatException 中的异常:对于输入字符串:“Pieniądze 13062 +5070/h”
  • @Myszsoda:这是第二个问题,应该在您正确研究之后作为单独的帖子提出。
  • @Myszsoda 我认为问题解决了吗?您始终可以按" " 拆分结果并按索引获取结果。
猜你喜欢
  • 2015-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多