实践| selenium实现用户登录

模拟实践:selenium实现用户登录。

1、创建服务器

本地创建静态网页:

<body>
<form id="frm" action="/" method="post">
<div>用户<input type="text" name="user"></div>
<div>密码<input type="password" name="pwd"></div>
<div><input type="submit" name="login" vaule='登录'></div>
</form>
</body>

创建服务器的完整代码:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:LingInHeart
#用户登录的服务器
import flask
app=flask.Flask(__name__)
#根目录相应post与get方法
@app.route("/",methods=['POST','GET'])
def login():
    user = flask.request.values.get("user") if "user" in flask.request.values else ""
    pwd = flask.request.values.get("pwd") if "pwd" in flask.request.values else ""
    #设定的用户名与密码,对应执行show方法
    if user == "xxx" and pwd == "123":
        return flask.redirect("/show")
    #否则重新返回本低静态页面
    else:
        f = open(r'D:\python\Python37\Practise\related data\index.html', 'rb')
        data = f.read()
        f.close()
        return data
@app.route("/show",methods=['POST','GET'])
def show():
    s = "<table border='1'>"
    s = s + "<tr><td>品牌</td><td>型号</td><td>价格</td></tr>"
    s = s + "<tr><td>华为</td><td>P9</td><td>3800</td></tr>"
    s = s + "<tr><td>华为</td><td>P10</td><td>4200</td></tr>"
    s = s + "<tr><td>苹果</td><td>iPhone6</td><td>5800</td></tr>"
    s = s + "</table><p>"
    #退出的实现是返回根目录
    s = s + "<a href='/'>退出</a>"
    return s

app.run()

运行效果:
在这里插入图片描述在这里插入图片描述

2、selenium使用元素方法

Selenium 查找 HTML 时返回一个 WebElement 对象,对象不但可以使用它获取元素的属性值,而且它还有动作,主要的动作是键盘输入动作与鼠标点击动作。

2.1 键盘输入

有些元素例如<input type=”text”>文本输入框是用户可以输入文字的,WebElement 对象element 可以模拟用户的键盘输入动作,主要动作有:
(1) 函数 clear()模拟清除 element 元素中的所有文字;
(2) 函数 send_keys(string)模拟键盘在元素中输入字符串 string;
其中 send_keys 函数不但可以模拟输入一般的文字,而且还可以模拟输入回车、退格等键盘动作,selenium 提供了一个 Keys 类,其中提供了很多常用的不可见的特殊按键,主要有 Keys.BACKSPACE 退格删除键和 Keys.ENTER 回车键。

2.2 鼠标点击动作

很多 HTML 元素都有鼠标点击动作,例如<input type="submit">提交按钮点击后就提交表单。WebElement 使用 click()函数实现鼠标点击,例如:driver.find_element_by_xpath(“input[@type=’submit’]”).click()

3、爬取数据

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:LingInHeart
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
def login(url):
    chrome.get(url)
    user=chrome.find_element_by_name('user')
    pwd=chrome.find_element_by_name('pwd')
    log=chrome.find_element_by_name('login')
    user.send_keys('xxx')
    time.sleep(0.5)
    pwd.send_keys('123')
    log.click()
def spider():
    x=chrome.find_elements_by_tag_name('tr')
    for i in range(1,len(x)):
        tds = x[i].find_elements_by_tag_name("td")
        if len(tds) == 3:
            mark = tds[0].text
            model = tds[1].text
            price = tds[2].text
            print("%-16s%-16s%-16s" % (mark, model, price))

c_s=Options()
c_s.add_argument('--headless')
chrome=webdriver.Chrome(chrome_options=c_s)
login('http://127.0.0.1:5000/')
spider()
chrome.close()

结果:
在这里插入图片描述

发布了70 篇原创文章 · 获赞 15 · 访问量 4291

猜你喜欢

转载自blog.csdn.net/Heart_for_Ling/article/details/103634649
今日推荐