4.2控制浏览器
4.2.1控制浏览器窗口大小
通过
driver.set_window_size(480,800) 来设置大小。
#coding=utf-8
#打开浏览器,并控制浏览器的大小
from
selenium
import
webdriver
driver = webdriver.Firefox()
driver.get(
"http://bbs.u.360.cn"
)
#参数数字为像素点
print
(
"设置浏览器宽480.高800"
)
driver.set_window_size(
480
,
800
)
#driver.quit()
maximize_window_size()来设置全屏。
4.2.2控制浏览器前进、后退
back()后退
forward()前进
#coding=utf-8
# from selenium import webdriver
from
time
import
sleep
#
# driver =webdriver.Firefox
from
selenium
import
webdriver
driver = webdriver.Firefox()
driver.get(
"http://bbs.u.360.cn"
)
# first_url= 'http://bbs.u.360.cn'
# print("now access %s" %(first_url))
# driver.get("http://bbs.u.360.cn")
sleep(
2
)
driver.find_element_by_link_text(
"手机版"
).click()
sleep(
2
)
driver.get(
"http://u.360.cn"
)
driver.back()
sleep(
1
)
driver.back()
sleep(
1
)
driver.forward()
4.2.3模拟器刷新
driver.refresh()
某些界面进行操作后,还需要手动刷新才会有数量变化。
4.3简单元素操作
clear() 清除文本
send_keys(*value) 模拟按键输入
click() 单机元素
4.3.1网站登陆
#coding=utf-8
from
selenium
import
webdriver
from
time
import
sleep
driver = webdriver.Firefox()
#driver = webdriver.Chrome()
#url="http://www.126.com"
#url="http://www.baidu.com"
driver.get(url)
driver.find_element_by_link_text(
"登录"
).click()
sleep(
2
)
print
(
"account"
)
driver.find_element_by_css_selector(
'.quc-input.quc-input-account'
).send_keys(
"username"
)#输入账号
print
(
"password"
)
sleep(
2
)
driver.find_element_by_css_selector(
'.quc-input.quc-input-password'
).send_keys(
'password'
)#输入密码
print
(
"login_account"
)
driver.find_element_by_css_selector(
".quc-submit.quc-button.quc-button-sign-in"
).click()
sleep(
2
)
driver.refresh()
#driver.quit()
4.3.2WebElement接口常用方法
submit() 用于提交表单。 需要type=submit 有道首页已经更改,没有翻译按钮没有type=submit属性,所以用百度首页。
#coding=utf-8
from
selenium
import
webdriver
driver=webdriver.Firefox()
driver.get(
"http://www.baidu.com"
)
driver.find_element_by_id(
"kw"
).send_keys(
"hello"
)
#提交输入框的内容
driver.find_element_by__by_id(
"su"
).submit()
#driver.quit
size() 返回元素的尺寸
text() 获取元素的文本
get_attribute(name) 获取属性值
is_displayed() 设置
__author__
=
'dufengchen'
#coding=utf-8
from
selenium
import
webdriver
driver=webdriver.Firefox()
url=
"http://www.baidu.com"
#url="http://bbs.u.360.cn"
driver.get(url)
#获取输入框的尺寸
size=driver.find_element_by_id(
"key-words"
).size
print
(size)
#返回底部备案信息
text= driver.find_element_by_css_selector(
'.footer>p'
).text
textEncode=text.encode(
"utf-8"
)
print
(textEncode)
#textDecode=textEncode.decode("utf-8")
#print(textDecode)
#通过urllib.parse.quote 将字节序列转化成url的中文编码形式,逆过程是unquote函数。
import
urllib.parse
res = urllib.parse.quote(textEncode)
print
(res)
#返回第一个游戏列表的某一元素属性,游戏名称
game_name=driver.find_element_by_css_selector(
".bbs_home_games>dl>dt>a>p"
).get_attribute(
"title"
)
print
(game_name)
#判断某一元素:游戏挂件是否存在
result=driver.find_element_by_css_selector(
".pos_con_hang>a>img"
).is_displayed()
print
(result)
driver.quit()
4.4鼠标事件
ActionChains 类提供了鼠标操作的常用方法
perform() 执行所有ActionChains中存储的方法
context_click() 右击
double_click() 双击
drag_and_drop() 拖动
move_to_element() 鼠标悬停
需要引入点击事件的库:
from selenium.webdriver.common.action_chains import ActionChains
from
selenium
import
webdriver
#引入ActionChains类
from
selenium.webdriver.common.action_chains
import
ActionChains
driver = webdriver.Firefox()
url=
"http://bbs.u.360.cn"
driver.get(url)
#1定位要右击的元素
right_click=driver.find_element_by_css_selector(
".icon-gamelist.gamelist-button"
)
ActionChains(driver).
context_click
(right_click).perform()
print
(
"右击"
)
#2设置鼠标悬停
above = driver.find_element_by_css_selector(
".bbs_home_games>dl>dt>a>p"
)
ActionChains(driver).
move_to_element
(above).perform()
print
(
"悬停"
)
#3定位要双击的元素
doubleshuang_click=driver.find_element_by_class_name(
"icon-gamelist.gamelist-button"
)
ActionChains(driver).
double_click(
doubleshuang_click).perform()
print
(
"双击"
)
#4鼠标拖放,drag_and_drop()
#定位元素原先位置
element=driver.find_element_by_xpath(
".//*[@id='bbs_home_hot_games']/div[1]/dl[2]/dt/a/p"
)
#element=driver.find_element_by_css_selector()
#定位元素要拖放的位置
target =driver.find_element_by_xpath(
".//*[@id='bbs_home_hot_games']/div[1]/dl[3]/dt/a/p"
)
#执行元素的托放操作
ActionChains(driver).drag_and_drop(element,target).perform()
4.5键盘事件
send_keys()可以模拟键盘输入,除此之外,还可以模拟组合按键。使用键盘方法必须事先导入Keys类
#coding=utf-8
from
selenium
import
webdriver
#引入Keys模块
from selenium.webdriver.common.keys import Keys
from
time
import
sleep
driver=webdriver.Firefox()
url=
"http://www.baidu.com"
id_words=
"kw"
#url="http://bbs.u.360.cn"
#id_words="key-words"
driver.get(url)
#输入内容
driver.find_element_by_id(id_words).send_keys(
"seleniumM"
)
sleep(
1
)
#
删除最
后一个字符M
driver.find_element_by_id(id_words).
send_keys(Keys.BACK_SPACE)
sleep(
2
)
#输入空格,加上教程
driver.find_element_by_id(id_words).send_keys(Keys.SPACE)
driver.find_element_by_id(id_words).
send_keys(Keys.SPACE)
driver.find_element_by_id(id_words).
send_keys('教程')
sleep(
2
)
#ctrl+ a 全
选输入框中的内容
driver.find_element_by_id(id_words).
send_keys(Keys.CONTROL,'a')
sleep(
2
)
#
ctrl+ x 剪切输
入框中的内容
driver.find_element_by_id(id_words).
send_keys(Keys.CONTROL,'x')
sleep(
2
)
#ctrl+ v 粘贴输入框中的内容
driver.find_element_by_id(id_words).
send_keys(Keys.CONTROL,
'v'
)
sleep(
2
)
#通过回车键代替单击操作
driver.find_element_by_id(id_words).
send_keys(Keys.ENTER)
sleep(
2
)
#driver.quit()