Splinter入门(七) Interacting with elements 元素交互(二)

API说明

 Splinter提供了系列操作表单组件的API。

函数 说明 注释
browser.fill('query', 'my name') 填充namequery的文本框,填充内容为my name 参数1为输入框的name属性值,参数2为填充的内容,为字符串
browser.attach_file('file', 'path') namefile的文件组件上传文件 参数1为文件组件的name属性值,参数2位文件路径,注意:文件路径不能是相对路径,只能是绝对路径
browser.choose('some-radio', 'radio-value') 选择name属性为some-radio且值为radio-value的单选框 参数1为radioname属性值,参数2为vlue属性值
browser.check('some-check') 选中name属性为some-check的复选框 参数1为复选框的name属性值
browser.uncheck('some-check') 取消选中name属性为some-check的复选框 参数1为复选框的name属性值
browser.select('uf', 'rj') 选中name为uf的下拉列表下 valuerj的下拉项 参数1为下拉列表selectname属性值,参数2为下拉列表项optionvalue属性值

示例

HTML文件
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>表单应用</title>
</head><body><h1>表单应用</h1><div><form>name:<input id = "nameId" type="text" name="firstname"><br>Sex:<input id="sexId" type="radio" name="sex" value="male">male <input id="sexId" type="radio" name="sex" value="female">female<br>Vehicle:<input id="vehicleId" type="checkbox" name="vehicle" value="Bike">I have a bike<br>Select:<select id="seclID" name="Select"><option value ="volvovalue" name='volvo'>Volvo</option><option value ="saabvalue" name='saab'>Saab</option><option value="opelvalue"  name='opel'>Opel</option><option value="audivalue" name='audi'>Audi</option></select>file:   <input type="file" id="inName" name = 'file' mutiple="multiple"></form></div>
</body>
</html>
Python脚本
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author  : cuntou0906
# @File    : 03.py
# @Time    : 2021/7/12 22:38from splinter import Browser
from time import  sleepbrowser = Browser('chrome')                  # 创建浏览器实例
browser.visit('file:///E:/My_code/Python_code/PythonWebCode/SplinterCode/04_InteractWithElement/html/index2.html')           # 访问baidu
browser.fill('firstname', 'cuntou0906')     # 文本域填充
sleep(1)
browser.choose('sex', 'female')             # 单选框
sleep(1)
browser.check('vehicle')                    # 选中复选框
sleep(1)
browser.uncheck('vehicle')                  # 取消选中复选框
sleep(1)
browser.select('Select', 'saabvalue')            # 下拉列表选中
sleep(1)                                    # 文件上传
browser.attach_file('file', 'E:/My_code/Python_code/PythonWebCode/SplinterCode/04_InteractWithElement/html/index.html')
sleep(1)
browser.quit()                              # 关闭浏览器
执行结果


  最后,说明一下,到底参数是填name属性值还是value属性值呢?以上面的下拉列表为例,如果browser.select(arg1,arg2)的第二个参数arg2也传入下拉列表option的的name属性值,则会报错,如:

browser.select('Select', 'saab')               # 下拉列表选中


  可以很清楚在报错中找到,我们传递进去的参数arg1和arg2分别传递给Xpath中selectnameoptionvalue属性值,然后通过find_by_xpath找到对应的组件。

Splinter入门(七) Interacting with elements 元素交互(二)相关推荐

  1. Splinter入门(三) Finding Elements 查找元素

    Splinter入门(三) Finding Elements 查找元素 查找Elements  Splinter提供了六种查找html元素的API,包括css, xpath, tag, name, i ...

  2. Splinter入门(四) Mouse interactions 鼠标交互

    Splinter入门(四) Mouse interactions 鼠标交互 Notes:大多数鼠标交互目前只在Chrome驱动程序和Firefox 27.0.1上有效. 鼠标交互基本使用  Splin ...

  3. Splinter入门(六) links的API

    Splinter入门(六) links的API (查找链接)Finding links  有时候,可能只关注含有连接links的元素,因此,在Splinter中,提供了links 命名空间,其下有多个 ...

  4. 网络编程懒人入门(七):深入浅出,全面理解HTTP协议

    转自即时通讯网:http://www.52im.net/ 本文引用了自简书作者"涤生_Woo"的文章,内容有删减,感谢原作者的分享. 1.前言 HTTP(全称超文本传输协议,英文全 ...

  5. 介绍Kadence Elements元素模板:按您的方式设计网站

    随着 Kadence Pro 1.0.4 和 Kadence Blocks Pro 1.5.8 的发布,Kadence 团队很高兴地宣布推出最强大的新方法,帮助网站所有者使用 Kadence Elem ...

  6. Splinter入门(十一) Screenshot 截图

    Splinter入门(十一) Screenshot 截图  Splinter支持对网页截图,对元素截图,以及保存html文件.API传递的路径参数均需使用绝对路径. Take screenshot 网 ...

  7. CSS入门七、CSS3新特性

    零.文章目录 CSS入门七.CSS3新特性 1.CSS3 的现状 新增的CSS3特性有兼容性问题,ie9+才支持 移动端支持优于 PC 端 不断改进中 应用相对广泛 2.CSS3 新增选择器 CSS3 ...

  8. Splinter入门(二) Browser对象

    Splinter入门(二) Browser对象  Browser即是Splinter的浏览器对象,对splinter的操作,需要创建Browser对象,正如你自个访问网页,首先也是需要打开浏览器. 创 ...

  9. Splinter入门(十二)Executing javascript(执行JavaScript)

    Splinter入门(十二)Executing javascript(执行JavaScript)   Splinter支持调用JavaScript脚本,例如: <!DOCTYPE html> ...

最新文章

  1. java 生成objectid_【Java】唯一ID的几种生成方案
  2. 通过python实现linux切换用户_Python操作远程服务器切换到root用户
  3. Java修炼之道--集合框架
  4. 【LeetCode】【字符串】题号:*58. 最后一个单词的长度
  5. java课程设计模拟画图_课程设计java画板模拟画图工具
  6. 数据算法_数据结构和常用算法
  7. 计算机制谱软件finale+2011应用教程,Finale2014(打谱软件)
  8. ZYNQ+LittleVGL
  9. 超酷的13个CSS有趣学习网站
  10. 服务器安卓系统安装教程,安卓系统安装到云服务器
  11. 知乎文章如何复制下来
  12. faster-rcnn 训练自己的数据集
  13. 华夏旅游CMS商城系统操作手册
  14. 39.(前端)欢迎页面的设置
  15. python之list与tuple
  16. jasper翻译_Jasper_Jasper是什么意思翻译
  17. java调用应用程序_java调用第三方应用程序
  18. Java八大数据类型
  19. 被was坑惨了,websphere下面报webapp.WebApp logError SRVE0293E: [Servlet Error]-[null]错误。
  20. [经验] 新版SkyIAR、Easy Image X在有些PE里不能运行的解决办法

热门文章

  1. integer java关键字_JAVA关键字及作用详解
  2. linux更改默认shell
  3. 现代操作系统(原书第四版)课后题答案 —— 第三章 内存管理
  4. 【已知一点经纬度和距离,计算另一点的经纬度】
  5. 逃离塔科夫服务器列表显示自己,逃离塔科夫服务器显示不全
  6. Vivado的Implementation都包含哪些步骤?
  7. 绿色环保网站管理系统mysql
  8. 我对因果的认知:超级员工、超级用户、超级公司
  9. 数组模拟二叉搜索树(二叉排序树)
  10. Nginx应用(搭建网站、设置权限、用户认证)