当前位置: 首页 > 知识库问答 >
问题:

在Xpath中使用“AND”和“normalize space”时,在不同的浏览器中会出现不同的错误

诸新霁
2023-03-14

我的网页上有以下简单的按钮-

<button type="button" class=" m-form-btn" onclick="myFunction()">Save</button>

作为类名有一个空格,所以我使用规范化空间()-

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”组织中出现异常。openqa。硒。遥远的UnreachableBrowserException:与远程浏览器通信时出错。它可能已经死了。构建信息:版本:“未知”,版本:“1969d75”,时间:“2016-10-18 09:43:45-0700”系统信息:主机:“TSS167”,ip:“192.168.1.167”,操作系统。名称:“Windows 8.1”,操作系统。拱门:“amd64”,操作系统。版本:“6.3”,java。版本:“1.8.0_91”驱动程序信息:驱动程序。版本:RemoteWebDriver功能[{rotatable=false,RaiseAccessibilityExceptions=false,marionette=true,firefoxOptions={args=[],prefs={}},appBuildId=20161208153507,版本=,平台=XP,代理={},命令id=1,规范级别=0,acceptSslCerts=false,进程id=7824,browserVersion=50.1.0,平台版本=6.3,XULappId={ec8030f7-c20a-464f-9b0e-13A3A9E979E979 384},browserName=firefox,takesScreenshot=true,takesElementScreenshot=true,platformName=windows\u nt}]会话ID:30ed9c92-2d49-4c7b-83bc-c1638e24b3e8,位于org。openqa。硒。遥远的RemoteWebDriver。在org上执行(RemoteWebDriver.java:622)。openqa。硒。遥远的RemoteWebDriver。findElement(RemoteWebDriver.java:368)位于org。openqa。硒。遥远的RemoteWebDriver。findelementbypath(RemoteWebDriver.java:473)位于org。openqa。硒。按$ByXPath。findElement(By.java:361)位于org。openqa。硒。遥远的RemoteWebDriver。findElement(RemoteWebDriver.java:360)在第八类。主(class8.java:28)由:java引起。lang.IllegalArgumentException:应为一个元素,但为:在com.google.常见的收集迭代器。com上的getOnlyElement(Iterators.java:322)。谷歌。常见的收集Iterables。getOnlyElement(Iterables.java:284)位于org。openqa。硒。遥远的错误代码。toStatus(ErrorCodes.java:138)位于org。openqa。硒。遥远的http。W3CHttpResponseCodec。在org上解码(W3ChtpResponseCodec.java:92)。openqa。硒。遥远的http。W3CHttpResponseCodec。在org上解码(W3ChtpResponseCodec.java:42)。openqa。硒。遥远的HttpCommandExecutor。在org上执行(HttpCommandExecutor.java:163)。openqa。硒。遥远的服务驱动器命令执行器。在组织上执行(DriverCommandExecutor.java:82)。openqa。硒。遥远的RemoteWebDriver。执行(RemoteWebDriver.java:601)。。。5个以上

和以下错误-

线程"main"org.openqa.selenium.InvalidSelectorException中的异常:无效选择器:由于以下错误,无法定位具有xpath表达式//按钮[规范化空间(@class)='m-form-btn'AND@type='按钮']的元素:语法错误:未能在'文档'上执行'评估':字符串'//按钮[规范化空间(@class)='m-form-btn'AND@type='按钮']'不是有效的XPath表达式。

我使用firepath对xpath和xpath进行了评估,得到了预期的输出。

我不知道是什么导致了这个问题,我正在使用规范化空间,是这样吗?或者我做错了什么?

使用selenium 3.0.1


共有1个答案

白星渊
2023-03-14
匿名用户

在XPath中使用大写的或或和是错误的(至少在Selenium中是这样)。您应该使用/。所以试试看

driver.findElement(By.xpath("//button[normalize-space(@class)='m-form-btn' and @type='button']")).click();

 类似资料:
  • 我有相同的图像和相同大小的画布,但是输出是不同的。我想要同样的输出,该怎么做呢?

  • 我需要一张图片来填充分区。根据这个答案,工作几乎完成了。当图像略大于其所包含的div时,就会出现问题。图像以100%的比例显示,这在我的情况下并不理想。 在Firefox中,这个问题可以通过使用以下CSS来解决: 在其他浏览器(使用Chrome和Edge测试)中,此解决方案不起作用,最终结果与以前相同。 有没有办法在其他浏览器上实现与Firefox相同的结果? 这是一个摆弄模型布局的摆弄,展示了这

  • 问题内容: 在IE7,IE8和Firefox上设置属性并返回不同的值: IE 8: IE 7: 火狐: 为什么存在这种差异? 在不使用jQuery的情况下,是否存在跨不同浏览器(IE8,IE7,Firefox)一致的等效属性? 问题答案: 这与浏览器的盒子模型有关。使用jQuery或其他JavaScript抽象库之类的东西来规范DOM模型。

  • 问题内容: 我正在写一个基于AJAX / COMET的在线聊天室。我的设计是: 请求 -----------------等待------------------------->发送转储数据 -----------------等待------------------------->发送转储数据 -----------------等待------------------------->发送转储数据 -

  • 问题内容: 我们有一个基于JSF 2.0(MyFaces)构建并在Weblogic应用服务器上运行的应用程序。我们面临有关http Session的问题。 问题: 假设我已经在两个不同的IE窗口中打开了该应用程序,并在第一个窗口中提供了一些搜索输入。在第二个窗口的会话中共享在第一个窗口中接收到的搜索结果数据。 注: 。Bean的作用域为,范围为。共享变量没有问题。 知道为什么会这样吗,以及防止这种

  • 问题内容: 有没有办法为特定的浏览器加载不同的CSS文件? 像(伪代码差): 问题答案: 您想要的理想解决方案不存在: 不幸的是,如果您尝试在HTML本身上进行操作,则不存在跨浏览器解决方案。但是,它将适用于大多数版本的IE。像这样: 所以最好的解决方案是: 这样的Javascript解决方案怎么样:浏览器检测。阅读有关此类的内容以更好地弄清该文件的基本作用,就是这样的概念: 显然,它不仅可以检测