webdriver API

Posted aaron-zhou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了webdriver API相关的知识,希望对你有一定的参考价值。

1. webdriver中常用属性

import time
from selenium import webdriver

driver = webdriver.Firefox()
driver.maximize_window()
driver.implicitly_wait(30)

driver.get("https://www.baidu.com")

# 判断元素是否可见,返回结果为布尔值
res = driver.find_element_by_id("kw").is_displayed()
print(res)

# 判断元素是否选中,返回结果为布尔值
res = driver.find_element_by_id("kw").is_selected()
print(res)

# 判断元素是否可编辑,返回结果为布尔值
res = driver.find_element_by_id("kw").is_enabled()
print(res)

# 在输入框中输入消息
driver.find_element_by_id("kw").send_keys("selenium")
time.sleep(2)

# 提交表单(可看作模拟回车键)
driver.find_element_by_id("kw").submit()
time.sleep(2)

# 清空输入框中输入的内容
driver.find_element_by_id("kw").clear()
time.sleep(2)

# 得到元素的属性值
res = driver.find_element_by_id("kw").get_attribute('id')
print(res)

# 得到元素的大小
res = driver.find_element_by_id("su").size
print(res)

# 得到元素的文本
res = driver.find_element_by_link_text("贴吧").text
print(res)

# 点击元素
driver.find_element_by_link_text("贴吧").click()

time.sleep(2)

driver.quit()

2. 浏览器页面操作

# -*- coding:utf-8 -*-
# Author: Aaron

import time

from selenium import webdriver

driver = webdriver.Firefox()

# 最大化浏览器窗口
driver.maximize_window()
# 隐式等待
driver.implicitly_wait(30)

# 加载测试地址
driver.get("https://www.baidu.com/")

# 获取当前使用的浏览器
res = driver.name
print(res)

# 获取当前页面的标题
res = driver.title
print(res)

# 获取当前页面的地址
res = driver.current_url
print(res)

# 获取当前页面的代码
time.sleep(2)
res = driver.page_source
print(res)

driver.get("https://cn.bing.com/")

# 后退回上一个界面
time.sleep(2)
driver.back()

# 前进到下一个页面
time.sleep(2)
driver.forward()

# 刷新当前页面
time.sleep(2)
driver.refresh()
time.sleep(2)

'''
多窗口
'''
driver.get("http://mail.sina.com.cn/")
# 获取当前页面的句柄
time.sleep(3)
now_handle = driver.current_window_handle
print(now_handle)

driver.find_element_by_link_text('注册').click()
time.sleep(4)

# 获取所有句柄
handles = driver.window_handles
print(handles)
for handle in handles:
    if handle != now_handle:
        driver.switch_to.window(handle)
        time.sleep(2)
        driver.find_element_by_name('email').send_keys('Aaron')
        time.sleep(2)
        # 关闭注册页面
        # driver.close()

# 切换为登录页面
driver.switch_to.window(now_handle)
driver.set_window_size(1080, 920)
time.sleep(2)
driver.find_element_by_id('freename').send_keys('Aaron')
time.sleep(2)

# 关闭当前页面
driver.close()
time.sleep(2)

# 退出驱动,并关闭所有页面
driver.quit()

3. 鼠标操作

'''
键盘操作步骤:
(1)导入ActionChains类
(2)定位需要操作的元素
(3)实例化对象
(4)调用ActionChains类的方法
'''

import time
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains

driver = webdriver.Firefox()
driver.maximize_window()
driver.implicitly_wait(30)

driver.get("https://www.baidu.com/")

# 鼠标悬停在"设置"上
element1 = driver.find_element_by_link_text("设置")
ActionChains(driver).move_to_element(element1).perform()
time.sleep(2)

# 双击左键文字"有事搜一搜"
element2 = driver.find_element_by_css_selector("div > p[class='sub-title']")
ActionChains(driver).double_click(element2).perform()
time.sleep(2)

# 单击右键
element3 = driver.find_element_by_id("su")
ActionChains(driver).context_click(element3).perform()

time.sleep(5)
driver.quit()

4. 键盘操作

'''
键盘操作步骤:
(1)导入Keys类
(2)在send_keys()中使用Keys类的属性
'''

import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Firefox()
driver.maximize_window()
driver.implicitly_wait(30)

driver.get('https://www.baidu.com/')

element = driver.find_element_by_id("kw")
element.send_keys("selenium")

# 模拟全选操作
element.send_keys(Keys.CONTROL, 'a')
time.sleep(2)

# 模拟复制操作
element.send_keys(Keys.CONTROL, 'c')
time.sleep(2)

# 模拟删除键
element.send_keys(Keys.BACKSPACE)
time.sleep(2)

element.clear()

# 模拟粘贴键
element.send_keys(Keys.CONTROL, 'v')
time.sleep(2)

driver.quit()

5. 下拉框操作

'''
下拉框操作步骤:
(1)导入Select类
(2)定位select标签的元素
(3)实例化对象
(4)调用Select类的方法
'''

import time
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.select import Select

driver = webdriver.Firefox()
driver.maximize_window()
driver.implicitly_wait(30)


driver.get("https://www.baidu.com/")

# 鼠标悬停在"设置"上
element1 = driver.find_element_by_link_text("设置")
ActionChains(driver).move_to_element(element1).perform()
time.sleep(2)

# 点击"高级搜索",进入高级搜索界面
driver.find_element_by_link_text("高级搜索").click()

# 定位"全部时间"下拉框的select标签
element = driver.find_element_by_css_selector('select[name="gpc"]')
# 实例化对象
slt = Select(element)

# 通过索引方式定位下拉选项
slt.select_by_index(1)
time.sleep(2)
slt.select_by_index(4)
time.sleep(2)

# 通过value属性定位
slt.select_by_value('stf')
time.sleep(2)

# 通过文本属性定位
slt.select_by_visible_text("最近一天")
time.sleep(2)
slt.select_by_visible_text("最近一月")
time.sleep(2)

driver.quit()

以上是关于webdriver API的主要内容,如果未能解决你的问题,请参考以下文章

WebDriver API——鼠标及键盘操作Actions

必须收藏:Selenium webdriver API 大全

Firefox 使用 webdriver python API 时无法打开 url

onActivityResult 未在 Android API 23 的片段上调用

WebDriver API

WebDriver API