如何在以下代码中编写xpath以识别07971394283:
<form id="HousingRepairs-confirmation-form" enctype="application/x-www-form-urlencoded" action="/communal-repairs-statuses-subscription/confirm.jsf?cid=1" method="post" name="HousingRepairs-confirmation-form">
<input type="hidden" value="HousingRepairs-confirmation-form" name="HousingRepairs-confirmation-form"> <div class="fieldset-container">
<p>Thank you for completing the communal repairs subscription form.</p>
<h3>What happens next?</h3>
<p> The mobile number **07971394283** will be added to the relevant subscription list. If you wish to unsubscribe at any time please use our <a id="HousingRepairs-confirmation-form:unSubscribeLink" href="https://contact.camden.gov.uk/unsubscribe-communal-repairs-alerts" name="HousingRepairs-confirmation-form:unSubscribeLink">communal repairs alerts unsubscription form</a>
答案 0 :(得分:0)
这应该有效:
"//p[contains(text(),'07971394283')]"
此XPath正在搜索包含07971394283的第一段。
编辑:我刚注意到需要一串数字而不是特定的数字。在这种情况下,AJMansfield的回答是正确的方法。
答案 1 :(得分:0)
要查找十一位数的字符串,请使用正则表达式。从最基本到最复杂:
\d{11}
将匹配连续的任意11位数字。但是,这可能并不理想,因为它也会匹配较长序列中的前11位数字。如果需要排除更长的数字字符串,请使用其他解决方案。
\D(\d{11})\D
将匹配由非数字字符,十一个数字和另一个非数字字符组成的任何字符串。数字本身将作为组1进行匹配。这种方法的问题是,如果数字位于字符串的开头或结尾,则无法匹配。如果这是一种可能的情况,还有其他方法可以处理它。
如果您的语言支持前瞻/后瞻,则可以使用(?<!\d)\d{11}(?!\d)
。这就是说,匹配一个11位数的序列,在它之前或之后没有另一个数字。不幸的是,并非所有工具都支持前瞻/后瞻。
有关如何在xpath中使用此内容的信息,此主题还有许多其他资源:
答案 2 :(得分:0)
这是不可能的,仅仅是因为Selenium依赖于浏览器的XPath引擎(并且在某些情况下提供了它自己的存在),其中主要浏览器的 none 实际上是support XPath 2(必需的)对于XPath中的正则表达式。
你必须首先找到元素然后然后证明它有你需要的内容(在这个问题的其他地方发布的正则表达式将起作用)。