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

如何在Python中使用Selenium填充Javascript表单?,python,selenium,Python,Selenium,我想用硒元素填一张表格。我最初使用了请求,但被告知请求在这个上下文中不处理Javascript表单填充。基本上,我的问题是找到表单本身的实际输入id,这样我就可以插入数据并提交它(下面的代码)。我不熟悉Selenium,但在阅读文档的过程中,我已经找到了一些东西。为此,我将使用hotwire.com,因此我需要找到表单输入id:如果您访问hotwire.com,您将看到“目的地”、“入住”、“退房”以及客人数量,最后是红色的“查找酒店”按钮。那么什么是目的地ID?什么是签入ID什么是签出ID?在

我想用硒元素填一张表格。我最初使用了请求,但被告知请求在这个上下文中不处理Javascript表单填充。基本上,我的问题是找到表单本身的实际输入id,这样我就可以插入数据并提交它(下面的代码)。我不熟悉Selenium,但在阅读文档的过程中,我已经找到了一些东西。为此,我将使用hotwire.com,因此我需要找到表单输入id:如果您访问hotwire.com,您将看到“目的地”、“入住”、“退房”以及客人数量,最后是红色的“查找酒店”按钮。那么什么是目的地ID?什么是签入ID什么是签出ID?在这一点上,这是唯一困扰我的问题,以及如何在这个过程中实际使用这些工具。在使用web检查器填写表单时,你们如何找到合适的正确输入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")

您可以尝试在SeleniumHanks中使用“JavascriptExcutor”来获得响应,我现在实际上是用Python得到的,我刚刚使用了web检查器,复制了“XPath”,然后将其插入到我的代码中。实际上,它工作得相当好,此后我转向Java以适应更大规模的项目,更加强调OOP/OOD和清晰性,因为我发现Python非常适合较小的脚本,但与笨重的Java相比,它变得很快。
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]))