安装selenium
pip install selenium
使用selenium
1.导入selenium库
from selenium import webdriver
2.创建实例
driver = weibdriver.FireFox()
3.打开网址
driver.get('http://www.baidu.com')
4.定位UI元素 示例:
(1)使用ID定位:根据标记id属性的值进行元素定位,个人比较推荐,因为id属性大部分具有唯一性,不用担心定位错元素,除非自动生成id属性,会出现“no such element”的报错。
driver.find_element_by_id("kw")orfrom selenium.webdriver.common.by import Bydriver.find_element(by=By.ID,value="kw")
(2)使用classname定位:根据标记class属性的值进行定位,除非该class属性值是唯一的,否则会定位该class属性值第一次出现的位置
driver.find_element_by_class_name("s_ipt") orfrom selenium.webdriver.common.by import Bydriver.find_element(By,CLASS_NAME,"s_ipt")
(3)使用tag name 定位:根据元素的标记名称进行定位,和classname定位一样,如果该tagname不是唯一的,则会定位值该tagname第一次出现的位置
driver.find_element_by_tag_name("input")orfrom selenium.webdriver.common.by import Bydriver.find_eleme(BY.TAG_NAME,"input")
(4)使用name定位:根据标记的name属性进行定位,同id定位一样,唯一性较强
driver.find_element_by_name("wd")orfrom selenium.webdriver.common.by import Bydriver.find_element(BY.NAME,"wd")
(5)使用link text定位:此定位方法适用于文本链接标记(<a>),如
关于百度
这样的情况。通过“关于百度”来定位元素
driver.find_element_by_link_text("关于百度")orfrom selenium.webdriver.common.by import BYdrvier.find_element(BY.LINK_TEXT,"关于百度")
(6)使用partial link text定位:此定位方法同link text定位相似,但是比link text定位使用范围相对更广泛,可以通过只言片语便能能进行定位,但是其准确性相比link text稍微差一些
driver.find_element_by_partial_link_text(‘’关于“)orfrom selenium.webdrvier.common,by import BYdrvier.find_element(BY.PARTIAL_LINK_TEXT,"关于")
(7)使用xpath定位:xpath定位的手段比较多,常见有如下几种: 定位百度首页搜索输入框 方法一:使用目标元素的绝对路径,如下面的情况
driver.find_element_by_xpath('/html/body/div[1]/div[1]/div/div[1]/div/form/span[1]/input')
方法二:使用元素属性定位:
#使用id属性driver.find_element_by_xpath('//input[@id=“kw”]’)#使用name属性driver.find_element_by_xpath('//input@[name=“wd"])#使用class属性driver.find_element_by_xpath('//input@[class="s_ipt"])#使用多个属性driver.find_element_by_xpath('//input@[class="s_ipt"] and @[name="wd"]')
要说明的是 //表示页面某个目录下
方法三:使用目标元素绝对路径和属性定位
driver.find_element_by_xpath("//span@[class='quickdelete-wrap'/input]")
(8)使用css选择器定位 方法一:使用目标元素的绝对路径,如下面的情况
driver.find_element_by_css_selector('html>body>div>wrapper>div>div>div>div>form>span>input')
多个标记使用'>'分开,
方法二:使用元素属性定位:
#使用id属性driver.find_element_by_css_selector('#kw’)#使用class属性driver.find_element_by_css_selector('.s_ipt')#使用标签driver.find_element_by_css_selector('input')#使用某个属性driver.find_element_by_css_selector('input[class="s_ipt"]')
要说明的是 //表示页面某个目录下
方法三:使用目标元素绝对路径和属性定位
driver.find_element_by_css_selector('span.bg.s_ipt_wr.quickdelete-wrap>input#kw')