我正在尝试用Capybara抓取一个网页,这个工作正常,但我在某个页面遇到问题。它有一个使用以下HTML定义的下拉列表:
<select onChange="this.form.submit();" id="AcctNumber" name="AcctNum">
<option value="MU:P2" selected="true">Investment - 2845</option>
<option value="MU:P0">Patrick UGMA - 1585</option>
<option value="MU:P1">Lisa UGMA - 1655</option>
我曾尝试在此主题中选择包含多种变体的值
selector = 'Investment - 2845'
selector = 'Investment - 2845'
selector = 'Investment - 2845'
select selector, :from => "AcctNumber"
所有这些(以及更多)产生ElementNotFound
错误。
有没有办法只使用正则表达式,比如说/Invest/
或/Pat/
或/Lisa/
选择项目?这肯定比猜测文字字符串会更容易
匹配这些连字符周围的神秘空白。
答案 0 :(得分:0)
您的问题可能是 连字符周围没有空格。
在浏览器中呈现时是一个不间断的空格字符 - 但是当被屏幕抓取器读取时,它是6个字符。 “
”。
这意味着当您尝试将其与屏幕抓取器匹配时,您应该尝试匹配HTML,而不是渲染版本。
我从你的cut'n'paste中注意到的第二件事是它们周围有标签字符。 RegEx中的选项卡和空格都使用\s
选择器进行匹配。
尝试使用此RegEx作为开头:
(Investment|Patrick|Lisa)[\s]*( )[-]( )[\s]*[0-9](,4)
这首先匹配单词“投资”或“帕特里克”或“丽莎” - 然后任意数量的空白(空格,制表符等) - 然后文字“”,短划线,文字“”再次,任何数量的空格,然后4位数字0-9。
注意: 我还没有测试过此RegEx。但是,它应该为您提供一个良好的构建起点。如果您需要更多帮助来调整它,我建议Regular-Expressions.info。