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