Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 水豚中的正则表达式具有xpath_Regex_Capybara - Fatal编程技术网

Regex 水豚中的正则表达式具有xpath

Regex 水豚中的正则表达式具有xpath,regex,capybara,Regex,Capybara,我有一个文本更改装饰时,点击它。在单击之前的测试中,我想检查它是否已单击。它改变颜色,文字装饰和href,我想通过检查 因为href包含特定于会话的信息,所以我想使用regex if page.have_xpath("//a[contains(@href,\"%20Administrators?\")]") 即使页面已被更新,管理员文本已更改为其他内容,这也会过去 如何更正语法以接受包含“%20Administrators?”文本的所有href。我想把它添加到if子句中,就像页面中有文本管理员

我有一个文本更改装饰时,点击它。在单击之前的测试中,我想检查它是否已单击。它改变颜色,文字装饰和href,我想通过检查

因为href包含特定于会话的信息,所以我想使用regex

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不客气。不要忘记接受答案(复选标记),这样你的问题就会被标记为已回答,如果它对你有帮助的话。