#先看一下简单的API # coding = utf-8 from selenium import webdriver import time browser = webdriver.Firefox() time.sleep(3) browser.get("http://www.baidu.com") time.sleep(3) browser.find_element_by_id("kw").send_keys("selenium") time.sleep(3) browser.find_element_by_id("su").click() browser.quit()
脚本解析 coding = utf-8 可加可不加,开发人员喜欢加一下,防止乱码。 from selenium importwebdriver 要想使用selenium 的webdriver 里的函数,首先把包导进来 browser =webdriver.Firefox() 我们需要操控哪个浏览器呢?Chrome ,当然也可以换成Ie 或Firefox。 browser.get() 可以随便取,但后面要用它操纵 各种函数执行。 browser.find_element_by_id(“kw”).send_keys(“selenium”) 一个控件有若干属性id、name、(也可以用其它方式定位),百度输入框的id 叫kw ,我要在输入框里输入 selenium 。 browser.find_element_by_id(“su”).click() 搜索的按钮的id 叫su ,我需要点一下按钮(click() )。 browser.quit() 退出并关闭窗口的每一个相关的驱动程序。
webdriver 提供了一系列的对象定位方法,常用的有以下几种
1、id和name定位
(举例:通过前端工具,找到百度输入框的相关属性)
<input id="kw" class="s_ipt" type="text" maxlength="100" name="wd" autocomplete="off">
id=”kw” 通过find_element_by_id(“kw”) 函数就是捕获到百度输入框 name=”wd”通过find_element_by_name(“wd”)函数同样也可以捕获百度输入框
2、class name 和 tag name的定位
从上面的百度输入框的属性信息中,我们看到,不单单只有id 和name 两个属性, 比如class 和tag name(标签 名)
input 就是一个标签的名字 可以通过find_element_by_tag_name(“input”) 函数来定位。 class=“s_ipt”, 通过find_element_by_class_name(“s_ipt”)函数捕获百度输入框
3、link text
有时候不是一个输入框也不是一个按钮,而是一个文字链接,我们可以通过link定位
#coding=utf-8 from selenium import webdriver browser = webdriver.Chrome() browser.get("http://www.baidu.com") browser.find_element_by_link_text("hao123").click() browser.quit()
4、partial link text
#coding=utf-8 from selenium import webdriver browser = webdriver.Chrome() browser.get("http://www.baidu.com") browser.find_element_by_partial_link_text("hao").click() browser.quit()
5、xpath
XPath 扩展了上面id 和name 定位方式,提供了很多种可能性。
6、css selector
CSS 的比较灵活可以选择控件的任意属性,上面的例子中: find_element_by_css_selector("#kw") 通过find_element_by_css_selector( )函数,选择取百度输入框的id 属性来定义
webdriver 中比较常用的操作对象的方法有下面几个:
click 点击对象 send_keys 在对象上模拟按键输入 clear 清除对象的内容,如果可以的话 submit清除对象的内容,如果可以的话 text 用于获取元素的文本信息
智能等待:通过添加implicitly_wait() 方法就可以方便的实现智能等待;implicitly_wait(30)的用法应该比time.sleep() 更智能, 后者只能选择一个固定的时间的等待,前者可以在一个时间范围内智能的等待。
作者:Sandy
原文链接:https://blog.csdn.net/qq_44938404/article/details/105609917