access = 'Product Name'
path = "//span[contains(text(), '#{access}')]/parent::*[1]/preceding-sibling::input[1]"
jscript = <<EOF
function setCheckboxes(path){
var cbx = document.evaluate(path, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
cbx.click()};
setCheckboxes("#{path}");
EOF
@browser.execute_script jscript
当我运行该脚本,我得到一个错误:如何执行复杂的Javascript代码?
Selenium::WebDriver::Error::JavascriptError: JavaScript error
没有问题的JavaScript或XPath。问题在于执行。 你能帮我解决什么问题吗?
什么是完整的堆栈跟踪?实际上,这看起来像来自驱动程序中的错误。 1.使用$ DEBUG = true运行测试,然后粘贴executeScript的帖子和响应。 2.这是什么浏览器?它在其他浏览器上失败吗? 3.为什么你需要在Javascript中做到这一点?通常这是一个坏主意。 :) – titusfortner
您好提示,它是在IE浏览器,我需要这样做,它要快得多,因为将有一个产品阵列(约400),并使用watir sept复选框是慢得多。 –
在黑暗中拍摄,但我想知道它是否与'path'变量的插值有关(即'setCheckboxes(“#{path}”);')。根据['documentation'](http://ruby-doc.org/core-2.2.0/doc/syntax/literals_rdoc.html#label-Here+Documents),这里的文档允许插值。所以,可能不需要双引号。 – orde