如何在下面的代码中编写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>发布于 2014-01-08 00:10:55
这应该是可行的:
"//p[contains(text(),'07971394283')]"此XPath正在搜索包含07971394283的第一个段落。
编辑:我只是注意到需要一串数字,而不是具体的数字。在这种情况下,AJMansfield的响应是正确的方法。
发布于 2014-01-08 00:13:08
要查找11位数字的字符串,请使用正则表达式。从最基本的到最复杂的:
\d{11}将匹配一行中的任意11位数字。然而,这可能不是我们所希望的,因为它还将匹配更长序列中的前11位数字。如果需要排除较长的数字字符串,则使用不同的solution.\D(\d{11})\D将作为一个整体匹配由一个非数字字符、11个数字和另一个非数字字符组成的任何字符串。数字本身将作为组1进行匹配。这种方法的问题是,如果数字位于字符串的最开始或最末尾,则无法匹配。如果这是一种可能的情况,还有其他方法来处理它。(?<!\d)\d{11}(?!\d)。这就是说,匹配一个11位数字的序列,该序列在它之前或之后没有另一个数字。不幸的是,并非所有工具都支持前视/后视。有关如何将其与xpath结合使用的详细信息,请参阅有关此主题的许多其他资源:
发布于 2014-01-08 02:41:28
这是不可能的,仅仅是因为Selenium依赖于浏览器的XPath引擎(并且在某些情况下提供了它自己的实体),其中主要浏览器的none实际上是support XPath 2的(XPath中的正则表达式需要)。
您必须首先找到该元素,然后证明它包含您需要的内容(此问题中其他地方发布的正则表达式将起作用)。
https://stackoverflow.com/questions/20975564
复制相似问题