我使用XPather Browser在HTML页面上检查我的XPATH表达式.
我的最终目标是在Selenium中使用这些表达式来测试我的用户界面.
我有一个HTML文件,其内容与此类似:
abc
我想选择一个包含字符串"
" 的文本的节点.
使用像"abc"这样的普通字符串是没有问题的.我使用类似的XPATH //td[text()="abc"]
.
当我尝试使用XPATH时,//td[text()=" "]
它什么都不返回.是否有关于" &
"的文本的特殊规则?
似乎OpenQA,Selenium背后的人,已经解决了这个问题.他们定义了一些变量来明确地匹配空格.在我的情况下,我需要使用类似的XPATH //td[text()="${nbsp}"]
.
我在这里转载了OpenQA关于这个问题的文本(在这里找到):
HTML自动规范化元素中的空白,忽略前导/尾随空格并将额外的空格,制表符和换行符转换为单个空格.当Selenium从页面中读取文本时,它会尝试复制此行为,因此您可以忽略HTML中的所有选项卡和换行符,并根据文本在呈现时在浏览器中的显示方式进行断言.我们通过用一个空格替换所有不可见的空格(包括非破坏空格"
")来实现这一点.所有可见换行符(
,
,和
格式化新线)应予以保留.
我们在HTML Selenese测试用例表的文本中使用相同的规范化逻辑.这具有许多优点.首先,您不需要查看页面的HTML源代码来确定您的断言应该是什么; "
"符号对最终用户是不可见的,因此在编写Selenese测试时您不必担心它们.(您不需要
在测试用例中将" "标记放在包含"
" 的字段上的assertText .)您也可以在Selenese
标记中添加额外的换行符和空格 ; 因为我们在测试用例上使用与文本相同的规范化逻辑,所以我们可以确保断言和提取的文本完全匹配. 当您真正想要/需要在测试用例中插入额外的空格时,这会在极少数情况下产生一些问题.例如,您可能需要在以下字段中键入文本:"
foo
".但是,如果您只是在Selenese测试用例中写入,我们将用一个空格替换您的额外空间.
foo 这个问题有一个简单的解决方法.我们在Selenese中定义了一个变量
${space}
,它的值是一个单独的空间.您可以使用${space}
以插入不会自动修剪的空间,如下所示:.我们还包含了一个变量
foo${space}${space}${space} ${nbsp}
,可用于插入不间断的空间.请注意,XPath 不像我们那样规范化空格.如果您需要编写类似XPath
//div[text()="hello world"]
但链接的HTML真的是"hello world
",那么您需要在Selenese测试用例中插入一个真实的" "以使其匹配,如下所示:
//div[text()="hello${nbsp}world"]
.
2> PhiLho..:当我通过在两个引号之间的Windows上键入Alt + 0160来输入硬编码的非破坏空间(U + 00A0)时,我发现我可以进行匹配...
//table[@id='TableID']//td[text()=' ']为我工作的特殊字符.
根据我的理解,XPath 1.0标准不处理转义Unicode字符.在XPath 2.0中似乎有相应的功能,但看起来Firefox不支持它(或者我误解了一些东西).所以你必须使用本地代码页.丑陋,我知道.
实际上,看起来标准依赖于编程语言使用XPath来提供正确的Unicode转义序列......所以,不知何故,我做了正确的事情.
用PHP成功完成这个工作:`$ col = $ xpath-> query("// p [text()= \"\ xC2\xA0 \"]");`推荐阅读
如何解决《即时添加/删除组件》经验,为你挑选了1个好方法。 ... [详细] 如何解决《滚动淡出div》经验,为你挑选了1个好方法。 ... [详细] 如何解决《如何按顺序刷新IPythonNotebook中的图?》经验,为你挑选了0个好方法。 ... [详细] 如何解决《扩展"读取"式行为》经验,为你挑选了1个好方法。 ... [详细] 如何解决《将前导零添加到varchar字段》经验,为你挑选了2个好方法。 ... [详细] 如何解决《在swift中将阴影应用于导航栏》经验,为你挑选了1个好方法。 ... [详细] 如何解决《如何调试ReactRouter?》经验,为你挑选了1个好方法。 ... [详细] 如何解决《更快地解析代码文件》经验,为你挑选了1个好方法。 ... [详细] 如何解决《让Spark,Java和MongoDB协同工作》经验,为你挑选了0个好方法。 ... [详细] 如何解决《记录Tomcat服务器的所有HTTP请求?》经验,为你挑选了1个好方法。 ... [详细] 如何解决《在方法参数中使用NotNullAnnotation》经验,为你挑选了4个好方法。 ... [详细] 如何解决《是否可以使用window.onerror获取局部变量和参数值》经验,为你挑选了2个好方法。 ... [详细] 如何解决《检查excel2010vba中是否存在目录》经验,为你挑选了1个好方法。 ... [详细] 如何解决《如何动态转换为使用Swift2.0在字符串中命名的Type?》经验,为你挑选了1个好方法。 ... [详细] 如何解决《Cycle.jsHTTP在添加加载指示符后发送多个请求》经验,为你挑选了1个好方法。 ... [详细] 如何解决《如何获取materializecss复选框以使用@Html.CheckBoxFor?》经验,为你挑选了1个好方法。 ... [详细] 如何解决《Spark的累加器使我感到困惑。》经验,为你挑选了1个好方法。 ... [详细] 如何解决《是否在html电子邮件模板中普遍支持span元素?》经验,为你挑选了1个好方法。 ... [详细] 吐了个 "CAO" !Tags | 热门标签RankList | 热门文章
- 1python逻辑回归(初学者)
- 2使用C++将结构复制到数组中
- 3如何从方法中打印指针的值?
- 4在C中安全二进制搜索
- 5匹配列表后修复类型擦除
- 6Object.wait()超过了超时
- 7强制SQL Server查询不返回任何行
- 8如何从COBOL中的COMP-3字段读取Java中的日期?
- 9WinSCP .NET程序集:如何下载目录
- 10确定最大开放空间的高效算法
- 11如果孩子的总数是偶数,如何将样式添加到倒数第二?
- 12Jupyter和Common Lisp
- 13即时添加/删除组件
- 14滚动淡出div
- 15如何按顺序刷新IPython Notebook中的图?
- 16扩展"读取"式行为
- 17将前导零添加到varchar字段
- 18在swift中将阴影应用于导航栏
- 19如何调试React Router?
- 20更快地解析代码文件
DevBox开发工具箱 | 专业的在线开发工具网站 京公网安备 11010802040832号 | 京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有