2016-05-16 201 views
0
document_name ='TestDoc' 
document_path = ("/Users/Me/QA/Project/Documents/#{document_name}") 

File.new ("/Users/Me/QA/Project/Documents/#{document_name}") # => File is created 
filename_field.send_keys("#{document_path}") 
filename_field.send_keys :tab # => To Trigger event but where error occurs 

filename_field = browser.file_field(:name,'file')在其他地方的模塊中聲明。Ruby/Selenium/Watir Webdriver:絕對路徑的「路徑不是絕對的」錯誤

據我所知,我所提供的絕對路徑的文件名上傳的文件,但是當tab鍵發送,發生錯誤:

Selenium::WebDriver::Error::UnknownError: unknown error: path is not absolute: 

隨着RubyMine的奇數squiggly symbol我從未見過。有任何想法嗎?

更新:

我加

puts filename_field.value 
# => C:\fakepath\TestDoc 

說着給開發商之一,她說:「瀏覽器它假東西出來,所以文件系統不外露」。不知道這是否有助於解決我的問題,或者我是SOL?

+0

我很困惑。在聲明它之前,您正在'filename_field' var上使用'send_keys'。 – orde

+0

對不起,這是其他地方聲明,並不意味着將其包含在代碼段中。將編輯! – user3468025

+0

給定'filename_field.value'的輸出,假設您使用Windows是否正確? –

回答

0

該錯誤來自Chromedriver,並且來自發送不正確的路徑字符串到文件元素。由於:tab不是路徑,所以正確地引發錯誤。

您不應該需要發送選項卡;只是發送文件的路徑應該完成你所需要的。

+0

謝謝,我在這裏咆哮錯誤的樹。 「標籤」背後的想法是嘗試觸發事件,該事件實際上將文件上傳到UI中,而不僅僅是設置file_field,並且沒有像我目前正在進行的那樣發生任何事情。這給了我一些繼續,並解決這個問題。謝謝。 – user3468025

0

我在代碼中看到很多奇怪的小東西。

爲什麼

document_path = ("/Users/Me/QA/Project/Documents/#{document_name}") 

document_path = "/Users/Me/QA/Project/Documents/#{document_name}" 

爲什麼

filename_field.send_keys("#{document_path}") 

filename_field.send_keys(document_path) 

但主要問題是爲什麼你使用send_keys而不是

我未能重現您的問題。也許這將是可能的,如果你會提供你的HTML。但我建議你嘗試:

filename_field.set(document_path) 

因爲你可以很容易地甚至IRB send_keys檢查它在Firefox和Chrome瀏覽器例如充當不同。所以也許有問題。

另一個建議

這是一個更弱的想法。但是...

嘗試在更改之前清除值。你可以使用javascript來做到這一點:

b.execute_script("arguments[0].value=''", field) 
+0

感謝您的輸入。我對這個還是比較陌生的,而且自學成才,所以你的意見很有幫助!實際上,我在set和send_keys之間切換的結果相同,就像我在創建這篇文章時使用的是send_keys一樣。 我嘗試使用明確的字段JavaScript,並使用IRB在Firefox中進行測試。嘗試設置FF中的字段時出現以下錯誤: 'code Errno :: ECONNREFUSED:Connection refused - connect(2)for「127.0.0.1」port 7055' – user3468025

+1

'set'只是在執行清除操作之前執行清除操作'send_keys'因此'send_keys'可能是首選的選項。 – titusfortner

0

我與Chromedriver 2.26.436421有同樣的問題,它解決了當我刪除發送Tab鍵的代碼。

與以前的Chromedriver發送標籤鍵是需要觸發文件輸入的更改事件,但與最新的一個,它似乎只是導致問題和更改事件觸發沒有它。