Python 利用selenium 控制浏览器自动提交表单

less than 1 minute read

Published:



你是第位访客~ ٩(๑^o^๑)۶ Σ(っ °Д °;)っ被你发现了!

Python 利用selenium 自动控制浏览器提交表单

前期准备

  1. 下载安装chrome webdriver https://sites.google.com/chromium.org/driver/downloads?authuser=0
  2. 安装selenium pip install seleuim

执行代码

  • 如果有一些网站需要登录,可以执行以下命令启动一个常驻浏览器,并且将用户信息写到指定路径
# 针对macos 上的Chrome 浏览器
export PATH="/Applications/Google Chrome.app/Contents/MacOS:$PATH"
Google\ Chrome --remote-debugging-port=9222 --user-data-dir="~/ChromeProfile"
  • 经过以上操作就会启动一个浏览器,后续使用代码可以控制该浏览器上的行为。
from selenium import webdriver # selenium.__version__ = 4.8.0
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
import time


'''
如果想要保持登录状态:
打开一个terminal执行以下命令:
export PATH="/Applications/Google Chrome.app/Contents/MacOS:$PATH"
Google\ Chrome --remote-debugging-port=9222 --user-data-dir="~/ChromeProfile"

启动chrome驻留之后再执行以下代码
'''

# 打开浏览器驱动
option = webdriver.ChromeOptions()
option.add_experimental_option("debuggerAddress", "127.0.0.1:9222")

# 启动浏览器
driver = webdriver.Chrome(options = option)
driver.implicitly_wait(10)

class ServiceConfig():

    # 定义prepareWork函数,做准备工作
    def prepareWork(self,url):
        # 打开百度首页
        driver.get(url)

        # 查找搜索框元素
        search_input = driver.find_element(By.XPATH,'//*[@id="root"]/div[1]/div[2]/div/div[2]/div[1]/div/div/div/input')

        # 在搜索框中输入文本
        search_input.send_keys("人体工学椅子")
        # time.sleep(2)

        # 点击搜索按钮
        search_button = driver.find_element(By.XPATH,'//*[@id="root"]/div[1]/div[2]/div/div[2]/div[1]/div/button/span')
        ActionChains(driver).move_to_element(search_button).click().perform()
        # time.sleep(2)

        setting_button = driver.find_element(By.XPATH,'//*[@id="root"]/div[2]/div/div[3]/div/div/div/div[1]/div[2]/p[1]')
        ActionChains(driver).move_to_element(setting_button).click().perform()
        # time.sleep(2)
        windows = driver.window_handles
        driver.switch_to.window(windows[-1])

        sousuo_setting = driver.find_element(By.XPATH,'//*[@id="root"]/div[2]/div/div[3]/div[2]/div[5]/span[1]/button[1]/span')
        ActionChains(driver).move_to_element(sousuo_setting).click().perform()



if __name__ == '__main__':
    url = 'https://www.byte-mall.cn/'
    sc = ServiceConfig()
    sc.prepareWork(url)
    time.sleep(10000)
    

  • 具体其他复杂操作可以通过组合鼠标和键盘操作事件来实现