Regex 水豚中的正则表达式具有xpath
我有一个文本更改装饰时,点击它。在单击之前的测试中,我想检查它是否已单击。它改变颜色,文字装饰和href,我想通过检查 因为href包含特定于会话的信息,所以我想使用regexRegex 水豚中的正则表达式具有xpath,regex,capybara,Regex,Capybara,我有一个文本更改装饰时,点击它。在单击之前的测试中,我想检查它是否已单击。它改变颜色,文字装饰和href,我想通过检查 因为href包含特定于会话的信息,所以我想使用regex if page.have_xpath("//a[contains(@href,\"%20Administrators?\")]") 即使页面已被更新,管理员文本已更改为其他内容,这也会过去 如何更正语法以接受包含“%20Administrators?”文本的所有href。我想把它添加到if子句中,就像页面中有文本管理员
if page.have_xpath("//a[contains(@href,\"%20Administrators?\")]")
即使页面已被更新,管理员文本已更改为其他内容,这也会过去
如何更正语法以接受包含“%20Administrators?”文本的所有href。我想把它添加到if子句中,就像页面中有文本管理员链接一样
单击之前:href=“/sometext/%20Administrators?redirect=sometext”
单击:href=“/sometext/%20Standard?redirect=sometext”后,这里的主要问题是使用
have\u xpath
而不是have\u xpath?
have_xpath
返回一个RSpec匹配器,因此当与if
一起使用时,它将始终计算为true(因为它返回一个对象,并且还没有实际计算任何传入的xpath)是否有xpath?
返回布尔值结果true或false
if page.has_xpath?('.//a[contains(@href,"%20Administrators?")]')
第二个问题是,您的问题询问了regex,但是XPath 1.0(浏览器支持)没有regex支持,而且您的XPath根本没有使用regex(只是一个包含表达式)。如果您确实想使用regex来测试href(并且有更好的代码阅读能力),那么您应该使用has\u link?
boolean方法-大致如下
if page.has_link?(href: /Administrators/)
是否有链接?
如果需要,还可以验证链接的可见文本
if page.has_link?('Visible text of the link', href: /Administrators/)
最后,当将XPath与Capybara一起使用时,99%的情况下,您应该使用/
而不仅仅是/
-请参阅-这也是为什么使用CSS和/或Capybara提供的更具体的方法而不是xxx\u XPath
方法通常更简洁的原因之一
另外需要注意的是,所有提到的方法在默认情况下都有等待行为,因此它们最多会等待Capybara.default\u max\u wait\u time
秒,页面才会有匹配的链接。如果您知道页面是稳定的,并且只想立即知道是否存在匹配的链接,那么您可能希望将wait:false
作为一个选项传递
if page.has_link?(href: /Administrators/, wait: false)
问题是什么?正则表达式应该检查什么模式?您得到了哪些不是您想要的结果?我粘贴的代码不正确,我想知道我是否使用了正确的方法,以及如何更正语法以接受包含“%20Administrators?”文本的所有href。啊哈<代码>如何更正语法以接受包含“%20Administrators?”文本的所有href
。这似乎是你需要在帖子中添加的问题。但您还需要显示一些示例文本、您如何更改它以及更改后的文本。是否可能sometext
也包含“%20Administrators”,这就是为什么它在更改后仍然匹配?不,它没有。使用中的另一个唯一零件进行双重检查sometext@user3594145不客气。不要忘记接受答案(复选标记),这样你的问题就会被标记为已回答,如果它对你有帮助的话。