python selenium学习

来源:互联网 发布:美工需要学哪些东西 编辑:程序博客网 时间:2024/06/09 05:23

import time
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait #加入隐性等待模块
from selenium.webdriver.common.keys import Keys #加入键盘特殊按键
from selenium.webdriver.common.action_chains import ActionChains #鼠标事件
url = ‘https://www.baidu.com/’

这里可以用Chrome、Phantomjs等,如果没有加入环境变量,需要指定具体的位置

driver = webdriver.Firefox() #初始化

driver.maximize_window() #最大化浏览器

driver.set_window_size(1000,1000) #浏览器设定1000*1000的尺寸
driver.get(url) #获取页面

元素定位,注意定位的唯一性和准确性,以下为示范

id_position = driver.find_element_by_id(‘kw’) #通过id定位元素
name_position = driver.find_element_by_name(‘wd’)
class_name_position = driver.find_element_by_class_name(‘s_btn’)
link_text = driver.find_element_by_link_text(‘新闻’) #通过link_text定位元素
partial_link_text = driver.find_element_by_partial_link_text(‘闻’) #可以只利用连接的一部分文字进行匹配
tag_name_position = driver.find_element_by_tag_name(‘input’) #不好定位
xpath_position = driver.find_element_by_xpath(‘//input[@id=”kw”][@class=”s_ipt”]’) #好用
css_selector = driver.find_elements_by_css_selector(‘input[id=\”kw\”]’) #利用css_selector进行定位

隐形等待

driver.implicitly_wait(3) #智能等待,:闪电侠和凹凸曼约定好,不论闪电侠去哪儿,都要等凹凸曼xx秒,如果凹凸曼在这段时间内来了,则俩人立即出发去打怪兽,如果凹凸曼在规定时间内没到,则闪电侠自己去,那自然就等着凹凸曼给你抛异常吧。

显性等待

WebDriverWait(driver, 20, 0.5).until(driver.find_element_by_xpath(‘//input[@id=”kw”][@class=”s_ipt”]’))

强制等待

time.sleep(10)
driver.title #获取页面title
driver.get(url) #获取页面url
driver.back() #返回上一页面
driver.forward() #向前获取页面

操作测试对象

注意find_element和find_elements

button_position = driver.find_element_by_xpath(‘//input[@id=”su”][@value=”百度一下”]’)
input_position = driver.find_element_by_xpath(‘//input[@id=”kw”][@class=”s_ipt”][@name=”wd”]’)

button_position.click() #单击 xpath_position元素

input_position.send_keys(‘在对象上模拟按键输入’) #在对象上模拟按键输入
button_position.submit() #提交表单
input_position.clear() #清除选中框的内容
button_position.text #获取元素文本
button_position.get_attribute(‘value’) #获取属性值

键盘组合

input_position.send_keys(Keys.CONTROL,’a’) #control+a 全选
input_position.send_keys(Keys.CONTROL,’c’) #control+c 复制
input_position.send_keys(Keys.CONTROL,’v’) #control+v 粘贴

以此类推

python2.x中乱码问题,在字符串前增加u ,–>unicode

ActionChains(driver).context_click(button_position) #定位到元素执行鼠标右键活动,载入driver设定鼠标事,定位元素采用右击事件
ActionChains(driver).double_click(button_position) #双击

鼠标拖放

ActionChains(driver).drag_and_drop(element,target).perform() #设定起始和结束的地方,perform()用于执行操作

切换框架

switch_to_frame —->>> switch_to.frame

driver.switch_to.frame(‘login_frame’) #切换框架

原创粉丝点击