Python 爬虫笔记(三)

from selenium import webdriver  
from selenium.webdriver.common.action_chains import ActionChains #ActionChains鼠标操作类  
from selenium.webdriver.common.keys import Keys #keys类操作  
  
# 打开浏览器:  
browser = webdriver.Chrome()  
  
# # 若未配置环境变量:  
# path = r'C:\Program Files\Google\Chrome\Application\chromedriver.exe'  
# browser = webdriver.Chrome(executable_path = path)  
  
# 在指定时间范围等待:   
browser.implicitly_wait(30)  
  
# 设置超时  
browser.set_page_load_timeout(30)  
browser.set_script_timeout(30)  
  
# 打开url:  
browser.get(r"http://www.你的网站.com")  
  
# 前进/后退  
browser.forward()  
browser.back()  
  
# 刷新   
browser.refresh()  
  
# 将浏览器最大化  
browser.maximize_window()  
  
# 将设置浏览器为宽480,高800显示'  
browser.set_window_size(480, 800)  
  
# 关闭浏览器  
browser.quit()  
  
# 关闭标签  
browser.close()  
  
''''' 
获取浏览器窗口相关信息 
browser.title # 当前页面标题 
browser.name # 浏览器名 
browser.current_url # 返回当前页面url 
browser.window_handles # 返回当前浏览器的所有窗口 
browser.current_window_handle # 返回当前浏览器的窗口句柄 
'''  
  
# 跳转到其他标签页  
window = browser.window_handles  
browser.switch_to_window(window[1])  
  
# 选择窗口  
browser.switch_to_window('window_name')  
  
# 截取当前显示的页面并保存  
browser.get_screenshot_as_file(r'd:\backup\140591\桌面\首页图片\test.png')  
  
  
# 定位元素  
# 需要先分析源码  
text_username = browser.find_element_by_name('username')  
text_password = browser.find_element_by_name('password')  
form_login = browser.find_element_by_name('formlogin')  
# 也可以使用其他方法如xpath,注意转义符  
text_username = browser.find_element_by_xpath('//input[@name = \'username\']')  
''''' 
所有相关方法: 
find_element(by='id', value=None) 
find_element_by_class_name(name) 
find_element_by_css_selector(css_selector) 
find_element_by_id(id) 
find_element_by_link_text(link_text) 
find_element_by_name(name) 
find_element_by_partial_link_text(link_text) 
find_element_by_tag_name(name) 
find_element_by_xpath(xpath) 
element后加s则返回一组对象 
'''  
  
  
#-----------------------WebElement相关-----------------------  
  
# 输入值  
# send_keys也可以用于上传文件:send_keys('d:/abc.txt')  
text_username.send_keys("你的用户名_错误")  
text_password.send_keys("你的密码")  
  
# 清空输入框,换成正确的用户名  
text_username.clear()  
text_username.send_keys("你的用户名_正确")  
  
# 提交表单  
form_login.submit()  
  
''''' 
相关方法 
clear()  # 清除元素的内容 
send_keys()  # 在元素上模拟按键输入 
click()  # 单击元素 
submit()  # 提交表单 
size()  # 返回元素的尺寸 
text()  # 获取元素的文本 
get_attribute(name)  # 获得属性值 
is_displayed()  # 设置该元素是否用户可见 
'''  
  
  
#-------------------alert/confirm/prompt对话框处理-------------------  
  
''''' 
switch_to_alert()   # 用于获取网页上的警告信息。 
text   # 返回 alert/confirm/prompt 中的文字信息。 
accept()   # 点击确认按钮。 
dismiss()   # 点击取消按钮,如果有的话。 
send_keys()   # 输入值,这个alert\confirm没有对话框就不能用了,不然会报错。 
'''  
  
  
#-----------------------下拉框处理-----------------------  
# 二次定位  
# driver.find_element_by_xx('xx').find_element_by_xx('xx').click()  
  
#先定位到下拉框  
m=driver.find_element_by_id("ShippingMethod")  
#再点击下拉框下的选项  
m.find_element_by_xpath("//option[@value='10.69']").click()  
  
  
  
  
#-----------------------cookie处理-----------------------  
''''' 
get_cookies()   # 获得所有cookie信息 
get_cookie(name)   # 返回特定name 有cookie信息  
add_cookie(cookie_dict)   # 添加cookie,必须有name 和value 值 
delete_cookie(name)   # 删除特定(部分)的cookie信息 
delete_all_cookies()   # 删除所有cookie信息 
'''  
  
  
  
  
  
#-----------------------文件上传-----------------------  
# 定位上传按钮,添加本地文件  
# driver.find_element_by_xx('xx').send_keys('d:/abc.txt')  
driver.find_element_by_name("file").send_keys('D:\\selenium_use_case\upload_file.txt')  
  
  
  
#-----------------------文件下载-----------------------  
fp = webdriver.FirefoxProfile()  
fp.set_preference("browser.download.folderList",2)  
fp.set_preference("browser.download.manager.showWhenStarting",False)  
fp.set_preference("browser.download.dir", os.getcwd())  
fp.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream")  
  
browser = webdriver.Firefox(firefox_profile=fp)  
browser.get("http://pypi.python.org/pypi/selenium")  
browser.find_element_by_partial_link_text("selenium-2").click()  
  
  
  
  
#-----------------------Keys类键盘操作-----------------------  
from selenium.webdriver.common.keys import Keys   
  
# element.send_keys(...),下同  
''''' 
send_keys(Keys.BACK_SPACE) # 返回键 
send_keys(Keys.BACK_SPACE) 删除键(BackSpace) 
send_keys(Keys.SPACE)  空格键(Space) 
send_keys(Keys.TAB)  制表键(Tab) 
send_keys(Keys.ESCAPE)  回退键(Esc) 
send_keys(Keys.ENTER) 回车键(Enter) 
send_keys(Keys.CONTROL,'a') 全选(Ctrl+A) 
send_keys(Keys.CONTROL,'c') 复制(Ctrl+C) 
send_keys(Keys.CONTROL,'x') 剪切(Ctrl+X) 
send_keys(Keys.CONTROL,'v') 粘贴(Ctrl+V) 
'''  
  
  
  
# ----------------ActionChains类鼠标操作--------------------  
from selenium.webdriver.common.action_chains import ActionChains   
  
# 右键单击  
ActionChains(browser).context_click(text_username).perform()  
# 双击  
ActionChains(browser).double_click(text_username).perform()  
#执行元素的移动操作  
ActionChains(browser).drag_and_drop(text_username, text_password).perform()  
  
  
''''' 
ActionChains 类鼠标操作的常用方法: 
context_click()   # 右击 
double_click()   # 双击 
drag_and_drop()   # 拖动 
move_to_element()   # 鼠标悬停在一个元素上 
click_and_hold()   # 按下鼠标左键在一个元素上 
'''  
  
# -----------执行JavaScript脚本 --------------  
js="var q=document.getElementById(\"user_name\");q.style.border=\"1px solid red\";"  
#调用js  
browser.execute_script(js)  
  
# eg:  
# 将页面滚动条拖到底部  
js="var q=document.documentElement.scrollTop=10000"  
browser.execute_script(js)  
  
# 隐藏文字信息  
driver.execute_script('$("#tooltip").fadeOut();')  
  
# 隐藏按钮:  
button = driver.find_element_by_class_name('btn')  
driver.execute_script('$(arguments[0]).fadeOut()',button) 

 

posted @ 2017-10-11 19:53  _Undo  阅读(291)  评论(0编辑  收藏  举报