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

 

 

 

 

 

 

 

当然,我可以帮你输出一篇Selenium学习笔记。以下是一份简单的学习笔记供参考: Selenium学习笔记 Selenium是一款用于自动化Web应用程序测试的强大工具。它提供了一组丰富的API,可以与各种编程语言(如Python、Java、C#等)结合使用,以实现Web应用程序的自动化测试。 1. 安装和配置 首先,你需要安装Selenium库。如果你使用Python,可以使用以下命令安装: ``` pip install selenium ``` 安装完成后,你还需要下载并配置相应的浏览器驱动程序。Selenium支持各种浏览器,如Chrome、Firefox、Safari等。你可以在Selenium官方网站上找到相应的驱动程序下载链接。 2. 基本操作 Selenium提供了一系列方法来模拟用户在浏览器中的操作,如打开URL、点击元素、输入文本等。以下是一些常用的基本操作示例: - 打开浏览器并访问URL: ```python from selenium import webdriver driver = webdriver.Chrome() # 使用Chrome浏览器驱动 driver.get("https://www.example.com") # 打开指定URL ``` - 查找元素并操作: ```python element = driver.find_element_by_id("element_id") # 根据元素ID查找 element.click() # 点击元素 input_element = driver.find_element_by_name("input_name") # 根据元素名称查找 input_element.send_keys("Hello, World!") # 输入文本 ``` - 执行JavaScript代码: ```python driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") # 滚动到页面底部 ``` 3. 高级操作 Selenium还提供了一些高级操作,如处理弹窗、切换窗口、等待元素加载等。以下是一些常用的高级操作示例: - 处理弹窗: ```python alert = driver.switch_to.alert # 切换到弹窗 alert.accept() # 接受弹窗 confirm = driver.switch_to.alert # 切换到确认框 confirm.dismiss() # 取消确认框 ``` - 切换窗口: ```python window_handles = driver.window_handles # 获取所有窗口句柄 driver.switch_to.window(window_handles[-1]) # 切换到最后一个窗口 ``` - 等待元素加载: ```python from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC element = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, "element_id")) ) ``` 4. 测试框架 Selenium还可以与测试框架(如Pytest、JUnit等)结合使用,以便更好地组织和管理测试用例。你可以使用测试框架提供的断言方法来验证测试结果。 ```python import pytest def test_example(): driver = webdriver.Chrome() driver.get("https://www.example.com") assert "Example Domain" in driver.title # 断言页面标题包含指定文本 driver.quit() ``` 以上是一份简单的Selenium学习笔记,希望对你有所帮助。当然,Selenium还有很多其他功能和用法,你可以进一步深入学习和探索。祝你学习愉快!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值