我正在做一些关于按键处理固件项目的工作.我一直在谷歌搜索试图找出按键的典型持续时间,特别是快速打字员的最低时间.令人惊讶的是,我无法在任何地方找到任何数据.
我正在开发一个使用 Liquid 模板语言的项目。我有一个带有 iframe 的页面,显示了一些呈现的液体模板和一个编辑器部分。在编辑器部分,用户可以更改液体模板中引用的一些变量的值。此时需要重新渲染一些模板,但我只想重新渲染那些引用已更改变量的模板。
我坚持的一点是如何最好地获取液体模板中引用的变量列表。
所以如果我这样做:
templates=[]
templates[0] = Liquid::Template.parse("hi {{name}}")
templates[1] = Liquid::Template.parse("my cat is called {{cat_name}}")
Run Code Online (Sandbox Code Playgroud)
我想知道 'name' 被引用,但(例如)'cat' 不在模板 0 中。然后当名称更改时,我可以重新渲染模板 [0],当 cat 更改时,我可以重新渲染模板 [ 1]。
我发现我可以获得一个节点列表并检查每个节点以查看它是否是一个变量,例如 templates[0].root.nodelist[1] 的类型为 'Liquid::Variable' 但'name ' 变量的方法返回一个类型为 'Liquid::VariableLookup' 的对象,而该对象似乎没有从中获取名称的方法,这感觉就像我可能会以错误的方式处理它。
我们在网络应用中使用液体.我注意到Shopify已经实现了一些有用的过滤器,这些过滤器默认不包含在液体宝石中.例如url_param_escape
为了测试它我做了这个:
$ IRB
需要'液体'液体:: Template.parse('{{"&"| url_param_escape}}').render =>"&"
显然,默认情况下不包括这些过滤器.他们可以从某个地方获得吗?如果是这样,我在哪里以及如何将它们添加到解析器?否则是一个接一个地实现它们还是来自同一个模块或什么的?
我正在尝试使用 selenium 中的 css 选择器从网站获取给定类的前两个 div。我将使用 SO 来演示这个问题。如果我在控制台 chrome 开发工具中尝试选择器,它会起作用:
$('div.question-summary:eq(0)')
[<div class=?"question-summary narrow tagged-interesting" id=?"question-summary-27442616">?…?</div>?]
$('div.question-summary:eq(1)')
[<div class=?"question-summary narrow tagged-interesting" id=?"question-summary-27442177">?…?</div>?]
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用 selenlium webdriver 执行以下操作,则会出现错误:
require 'selenium-webdriver'
driver = Selenium::WebDriver.for :chrome
driver.navigate.to('http://www.stackoverflow.com')
first_element = driver.find_element(:css, 'div.mainnav:eq(0)')
Run Code Online (Sandbox Code Playgroud)
Selenium::WebDriver::Error::InvalidSelectorError: 无效选择器:指定了无效或非法的选择器
有没有另一种方式来表达这个选择器?或者一种让硒做出反应的方法?