我的网页中有以下简单按钮 -
<button type="button" class=" m-form-btn" onclick="myFunction()">Save</button>
因为类名有一个空格所以我正在使用normalize-space()
-
driver.findElement(By.xpath("//button[@type='button'][normalize-space(@class='m-form-btn')]")).click();
哪种方法正常,但我以这种方式使用AND
-
driver.findElement(By.xpath("//button[@type='button' AND normalize-space(@class='m-form-btn')]")).click();
//or
driver.findElement(By.xpath("//button[normalize-space(@class)='m-form-btn' AND @type='button']")).click();
在Firefox
-
线程“main”中的异常 org.openqa.selenium.remote.UnreachableBrowserException:错误 与远程浏览器通信。它可能已经死了。构建信息: 版本:'未知',修订版:'1969d75',时间:'2016-10-18 09:43:45 -0700'系统信息:主机:'TSS167',ip:'192.168.1.167',os.name:'Windows 8.1',os.arch:'amd64',os.version:'6.3',java.version: '1.8.0_91'驱动程序信息:driver.version:RemoteWebDriver功能 [{rotating = false,raisesAccessibilityExceptions = false, marionette = true,firefoxOptions = {args = [],prefs = {}}, appBuildId = 20161208153507,version =,platform = XP,proxy = {}, command_id = 1,specificationLevel = 0,acceptSslCerts = false, processId = 7824,browserVersion = 50.1.0,platformVersion = 6.3, XULappId = {ec8030f7-c20a-464f-9b0e-13a3a9e97384},browserName = firefox, takesScreenshot = true,takeElementScreenshot = true, platformName = windows_nt}]会话ID: 30ed9c92-2d49-4c7b-83bc-c1638e24b3e8 at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:622) 在 org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:368) 在 org.openqa.selenium.remote.RemoteWebDriver.findElementByXPath(RemoteWebDriver.java:473) 在org.openqa.selenium.By $ ByXPath.findElement(By.java:361)at at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:360) 在ClassEight.main(ClassEight.java:28)引起: java.lang.IllegalArgumentException:期望一个元素,但是: 在 com.google.common.collect.Iterators.getOnlyElement(Iterators.java:322) 在 com.google.common.collect.Iterables.getOnlyElement(Iterables.java:284) 在 org.openqa.selenium.remote.ErrorCodes.toStatus(ErrorCodes.java:138) 在 org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:92) 在 org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:42) 在 org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:163) 在 org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:82) 在 org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:601) ......还有5个
并在Chrome
-
线程“main”中的异常 org.openqa.selenium.InvalidSelectorException:无效的选择器:无法使用 使用xpath表达式定位元素 //按钮[normalize-space(@class)='m-form-btn'AND @ type ='button'] 由于以下错误:SyntaxError:无法执行 “评估”'文件':字符串 '// button [normalize-space(@class)='m-form-btn'AND @ type ='button']'is 不是有效的XPath表达式。
我使用evaluate
xpath
firepath
我获得了预期的输出。
我不知道导致问题的原因,我正在AND
使用normalize-space
是这样吗?或者我做错了什么?
使用selenium 3.0.1
答案 0 :(得分:3)
在OR
中使用大写AND
或XPath
是错误的方法(至少在Selenium
中)。您应该使用or
/ and
代替。所以试试
driver.findElement(By.xpath("//button[normalize-space(@class)='m-form-btn' and @type='button']")).click();