首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用内置Python模块填写Web表单数据

使用内置Python模块填写Web表单数据
EN

Stack Overflow用户
提问于 2014-09-26 08:08:55
回答 1查看 10.4K关注 0票数 5

好的,我已经在我的项目中使用了机械化,请求,美汤,甚至是selenium来做这样的事情,我得出的结论是urllib和其他默认模块是最好的方法。唯一的问题是我根本不知道如何使用它..那么,有没有人可以告诉我一些好的地方来了解这一点呢?此外,我学习最好的例子,所以如果有人会转换成我所要求的,这将是伟大的(还包括一个提交按钮笑)

代码语言:javascript
运行
复制
from selenium import webdriver

driver = webdriver.Firefox()

driver.get("http://www.jonessoda.com/contests/back2school")
element = driver.find_element_by_name("fname")
element.send_keys("Ben")
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-26 08:51:10

你确实想要硒。它在浏览器上模拟GUI交互。在做像输入竞赛表单数据这样的事情时,这将是最不容易被检测到的方式。

关于selenium的一个注意事项:它不是一个特定于语言的库。每种语言都有特定于客户端的绑定。您将看到的大多数示例和操作指南实际上都是用Java编写的。

一个很好的资源是Selenium-python

这是您的工作示例。包括提交按钮。

代码语言:javascript
运行
复制
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
i = 2 # do it 2 times
while i > 0:
    driver = webdriver.Firefox()
    driver.get("http://www.jonessoda.com/contests/back2school")

    def find_by_xpath(locator):
        element = WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.XPATH, locator))
        )

        return element

    class FormPage(object):
        def fill_form(self, data):
            find_by_xpath('//input[@name = "fname"]').send_keys(data['fname'])
            find_by_xpath('//input[@name = "lname"]').send_keys(data['lname'])
            find_by_xpath('//input[@name = "email"]').send_keys(data['email'])
            find_by_xpath('//select[@name = "birthday_month"]').send_keys(data['month'])
            find_by_xpath('//select[@name = "birthday_day"]').send_keys(data['day'])
            find_by_xpath('//select[@name = "birthday_year"]').send_keys(data['year'])

            return self # makes it so you can call .submit() after calling this function

        def submit(self):
            find_by_xpath('//input[@value = "Submit"]').click()

    data = {
        'fname': 'Sheep',
        'lname': 'Test',
        'email': 'jess@sheeptest.com',
        'month': 'October',
        'day': '29',
        'year': '1920'
    }

    FormPage().fill_form(data).submit()
    driver.quit() # closes the webbrowser
    i = i - 1
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26050075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档