web-applications - Selenium IDE 1.9.1 xpath 包含选择

标签 web-applications xpath selenium firefox-addon selenium-webdriver

我正在尝试使用名为 Selenium (webrat) 的软件来模拟用户与浏览器的交互

例如,我尝试将名称为“john”的用户名字段放入

但是“用户名文本框”的“id”是 username_947232、username_8237

用户名_[随机数]的格式

我的语法如下:

//*[contains(@id="username_(/\d+/)")]

但它不起作用,有人有任何想法吗?

谢谢您的建议!

最佳答案

使用:

//*[starts-with(@id, 'username_')
  and 
   floor(substring-after(@id, 'username_')) = substring-after(@id, 'username_')
    ]

说明:

此表达式选择其 id 属性的字符串值以字符串 "username_" 开头的任何元素以及该字符串的其余部分(在起始 "之后) username_") 是一个整数。

这里我们使用以下事实:当且仅当 $string 表示整数时,以下表达式为 true:

floor($string) = $string

基于 XSLT 的验证:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:template match="/">
     <xsl:copy-of select=
      "//*[starts-with(@id, 'username_')
  and
   floor(substring-after(@id, 'username_')) = substring-after(@id, 'username_')
    ]
    "/>
 </xsl:template>
</xsl:stylesheet>

当此转换应用于此 XML 文档时:

<t>
 <user id="username_Xyz"/>
 <user id="username_Xyz123"/>
 <user id="username_123Xyz"/>
 <user id="username_123Xyz456"/>
 <user id="username_2015"/>
</t>

计算 Xpath 表达式,并将从此计算中选择的节点复制到输出:

<user id="username_2015"/>

请注意:此问题的其他两个答案将从上述文档中选择所有 5 个 user 元素 - 这当然是不正确的。

关于web-applications - Selenium IDE 1.9.1 xpath 包含选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13081475/

相关文章:

web-applications - 选择 Web 应用程序框架来替换 VB6 和 Access 应用程序

xpath - xpath嵌套ul列表

ruby-on-rails - Rails 3.2.13 - Gem::LoadError,无法激活 gem

java - 除了使用 Tomcat 服务器之外,如何在 CentOS 上使用 Model View Controller 设置 Web 应用程序

android - GPS 不工作(Android 网络应用程序)

python - Selenium 在使用 actionchain().move 然后 actionchain.click 或 mouse_up 时挂起

python - 如何使用 selenium 登录包含 iframe 的网站?

javascript - 如何使用 jQuery 和 XPath 抓取网页?

xml - 从另一个节点的属性值中指定的路径检索 XML 节点

selenium - 机器人框架: passing argument to a keyword that returns an XPath