selenium笔记整理

零散常用的方法

 

from selenium import webdriver

# 调用键盘按键操作时需要引入的Keys包
from selenium.webdriver.common.keys import Keys

# 调用环境变量指定的PhantomJS浏览器创建浏览器对象
driver = webdriver.PhantomJS()

# 如果没有在环境变量指定PhantomJS位置
# driver = webdriver.PhantomJS(executable_path="./phantomjs"))

#获取当前页面的url
driver.current_url
# 页面前进后退
driver.forward()     #前进
driver.back()        # 后退

#关闭页面
driver.close()  关闭当前页面
driver.quit()  退出整个浏览器

# 获取新的页面快照
driver.save_screenshot("我爱学习.png")

# 打印网页渲染后的源代码
print driver.page_source

# 获取页面名为 wrapper的id标签的文本内容
data = driver.find_element_by_id("wrapper").text


# 打印页面标题
print driver.title

# ctrl+a 全选输入框内容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'a')

# ctrl+x 剪切输入框内容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'x')

# 输入框重新输入内容
driver.find_element_by_id("kw").send_keys("itcast")

# 模拟Enter回车键
driver.find_element_by_id("su").send_keys(Keys.RETURN)

元素定位

from selenium.webdriver.common.by import By
1.通过id来查找
driver.find_element_by_id('kw')
driver.find_element(By.ID,'kw')

2.通过类名来查找
cheeses = driver.find_elements_by_class_name("cheese")
cheeses = driver.find_elements(By.CLASS_NAME, "cheese")

3.通过name属性查找
driver.find_elements_by_name("email")
driver.find_elements(By.NAME,'email')

4.通过标签名查找
driver.find_elements_by_tag_name('div')
driver.find_elements(By.TAG_NAME,'kw')

5.通过xpath 语法查找
driver.find_elements_by_xpath("//div")
driver.find_elements(By.XPATH,'//div')

6.通过css选择器选择元素

driver.find_elements_by_css_selector("//div")
driver.find_elements(By.CSS_SELECTOR,'//div')

find_element  获取第一个满足条件的元素
find_elements 获取所有满足条件的元素

表单元素操作

1.button 
input[type='submit']
2.checkbox  input[type='checkbox ']
3.select 下拉列表
-----------
input_tag=driver.find_element_by_id('kw')
input_tag.send_keys("onion")  #填充
input_tag.clear()  #清除
-----------
remember_tag = driver.find_element_by_id('rememberME')
remember_tag.click()  #点击 
-------------------
选择标签:
选择select : select 元素不能直接点击。因为点击后还需要选中元素
<select> </select>

# 导入 Select 类
from selenium.webdriver.support.ui import Select

# 找到 name 的选项卡
select_tag = Select(driver.find_element_by_name('status'))

# 
select_tag.select_by_index(1) #索引
select_tag.select_by_value("0") #根据value里的值
select_tag.select_by_visible_text("广播") #根据文本内容
select_tag.deselect_all()  #取消所有的选中

 

行为链

有时候页面操作可能需要很多步,可以使用鼠标的行为链来完成

from selenium.webdriver import ActionChains
 input_tag = driver.find_element_by_id('kw')
 submit_tag = driver.find_element_by_id('su')

actions= ActionChains(driver)
action.move_to_element(input_tag)  #移动元素
action.send_keys_to_element(input_tag,'onion') 
action.move_to_element(submit_tag)
action.click(submit_tag)
action.perform()


click_and_hold(element) 点击但不松开鼠标
context_click(element) 右键点击
double_click(element)  双击 

# 将 ac1 拖拽到 ac2 位置
ac1 = driver.find_element_by_xpath('elementD')
ac2 = driver.find_element_by_xpath('elementE')
ActionChains(driver).drag_and_drop(ac1, ac2).perform()


 

cookie 操作

cookie 操作
1. 获取所有的cookie
for cookie in driver.get_cookies():
    print "%s -> %s" % (cookie['name'], cookie['value'])

2.删除cookie
# By name
driver.delete_cookie("CookieName")

# all
driver.delete_all_cookies()

3.根据cookie的key 获取value

value =driver.get_cookie(key)

页面等待

隐式等待是等待特定的时间,显式等待是指定某一条件直到这个条件成立时继续执行


1.隐式等待:在获取不可用元素等待一个确切的时间 

如果不设置等待时间为0s

from selenium import webdriver

driver = webdriver.Chrome()
driver.implicitly_wait(10) # 隐式等待10s
driver.get("http://www.xxxxx.com/loading")
myDynamicElement = driver.find_element_by_id("myDynamicElement")

2.显示等待

显式等待是指定某一条件直到这个条件成立时继续执行,也可以在等待的时候设定一个最大时间,如果超出这个时间就会抛出一个异常。

如果不写参数,程序默认会 0.5s 调用一次来查看元素是否已经生成,如果本来元素就是存在的,那么会立即返回。

from selenium import webdriver
from selenium.webdriver.common.by import By
# WebDriverWait 库,负责循环等待
from selenium.webdriver.support.ui import WebDriverWait
# expected_conditions 类,负责条件出发
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
driver.get("http://www.xxxxx.com/loading")
try:
    # 页面一直循环,直到 id="myDynamicElement" 出现,最多等待10s
    element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, "myDynamicElement"))
    )
finally:
    driver.quit()


presence_of_element_located  某个元素已经加载完毕
element_to_be_cliable  某个元素是否可以点击了

 

页面切换


 1.打开一个新的页面
借助js代码来实现打开一个新的页面
driver.execute_script("window.open('"+url+"')")
driver.execute_script("window.open(‘https://www.baidu.com/’)")

2.一个浏览器肯定会有很多窗口,所以我们肯定要有方法来实现窗口的切换。切换窗口的方法如下:

driver.switch_to.window("this is window name")
也可以使用 window_handles 方法来获取每个窗口的操作对象。例如:

for handle in driver.window_handles:
    driver.switch_to.window(handle)

 

设置代理

selenium 设置代理  不同的浏览器有不同的实现方式

谷歌浏览器如下

def proxy_test():
    op = webdriver.ChromeOptions()
    op.add_argument('--proxy-server=https://222.189.144.104:4245')
    driver =webdriver.Chrome(options=op)
    driver.get('http://httpbin.org/ip')

 

官方文档链接

selenium

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值