如何在Python中使用Selenium填充Javascript表单?

时间:2017-04-16 19:47:29

标签: python selenium

我试图用Selenium填写表格。我最初使用过请求,但被告知请求不处理填充此上下文的Javascript表单。本质上我的问题是找到实际的输入id:表单本身,所以我可以插入该数据并提交它(下面的代码)我不熟悉Selenium但是设法阅读文档并找出一些事情。为此,我将使用hotwire.com所以我需要找到表单输入ID:如果你到hotwire.com,你会看到"目的地","签入&# 34; ,"退房"随着客人的数量,最后大红色"寻找酒店"按钮。那么什么是目的地ID?什么是签到ID什么是签出ID?在这一点上,这是唯一让我感到困惑的事情,以及如何实际使用这些过程。当你使用网络检查员填写表格时,你们如何找到适当的输入ID?我花了好几个小时试图找到正确的标签,但仍然没有运气,因为我看到浏览器打开,加载页面,并且没有填充任何数据。

import selenium
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException



hotwireF = "https://www.hotwire.com"

# Use Safari to open URL
driver = webdriver.Safari()
# go to URL
driver.get(hotwireF)





search_form = driver.find_element_by_id("destination")
search_form.send_keys("POP")

1 个答案:

答案 0 :(得分:0)

import selenium
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException



hotwireF = "https://www.hotwire.com/hotels/results/"

# data to be changed accordingly...
data = {"destination"   :   "London",
        "startDate"     :   "09-08-2017",
        "endDate"       :   "09-09-2017",
        "No. rooms"     :   "1",
        "No. Adults"    :   "2",
        "No. Children"  :   "1"}

# Use Safari to open URL
driver = webdriver.Safari()
# go to URL
driver.get(hotwireF + "".join([data[i]+"/" for i in data]))