![](/img/trans.png)
[英]How to avoid timout by NOT using sleep in Ruby watir web page scripting?
[英]How to submit a form in a new page with using ruby web-watir phantomjs
我正在使用Web-watir驅動phantomjs。 我正在嘗試在網頁上提交一堆表格(POST)。 我把所有表格都收藏了。 單擊提交按鈕和browser.back()
,出現Selenium::WebDriver::Error::StaleElementReferenceError
。 我嘗試使用form.submit()
但返回並獲取StaleElementReferenceError
問題相同。 我試圖在另一個頁面中提交表單( browser.execute_script( "window.open(page)" )
),但我認為這不會提交我的表單(如果表單是GET,那可能行得通)。 我嘗試了與phantomjs會話分開的Net::HTTP.post_form()
(沒有用,我需要登錄)。
除了每次遍歷所有元素時,我都一無所獲。 我想我可以用Chrome或Firefox替換phantomjs。 告訴我,有沒有辦法在新頁面phantomJS中提交表單?
這是一些代碼:
forms = browser.forms()
forms.each{ | form |
form.submit()
browser.back()
}
如果提交每個表單都將您帶到另一個頁面,那么對於任何以前保存的元素,您都將收到StaleElementReferenceError。 這是Selenium-WebDriver的設計方式,因此,如果您切換到Chrome或Firefox,問題仍然存在。
假設您要遍歷每種表單,那么按索引查找每種表單將很容易:
browser.forms.length.times do |i|
browser.form(index: i).submit
browser.back
end
上面的代碼采用了直接提交表單的相同方法。 但是,如果可能,應單擊“提交”按鈕。 直接提交表單可能會繞過與單擊提交按鈕的操作有關的重要代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.