簡體   English   中英

如何使用ruby web-watir phantomjs在新頁面中提交表單

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM