selenium的常用使用命令

1、 要使用selenium首先导入webdriver 
2、 生成浏览器对象 driver = webdriver.PhantomJS() 
3、 driver.get(url)方法:加载指定页面,阻塞方式直到加载完成 
4、 driver.find_element_by_id(elemid)方法:获取页面指定 id 的标签 
5、 driver.title:页面标题 
6、 driver.page_source:页面源码 
7、 driver.get_cookies():获取页面 coolies 
8、 driver.save_screenshot(filename): 保存当前页面快照 
9、 driver.find_element_by_id("kw").send_keys("奇酷信息"):指定元素设置 value, 通常用于 input field 
10、 driver.find_element_by_id("su").click()模拟点击,通常用于按钮 
11、 driver.find_element_by_id("kw").clear(): 清除输入框内容
12、 driver.quit():关闭浏览器 

定位UI元素 (WebElements) 

单个元素查找

find_element_by_name

find_element_by_id

find_element_by_xpath

find_element_by_link_text

find_element_by_partial_link_text

find_element_by_tag_name

find_element_by_class_name

find_element_by_css_selector 

多个元素查找

find_elements_by_name

find_elements_by_id

find_elements_by_xpath

find_elements_by_link_text

find_elements_by_partial_link_text

find_elements_by_tag_name 

find_elements_by_class_name

find_elements_by_css_selector 

ActionChains方法列表

click(on_element=None) ——单击鼠标左键

click_and_hold(on_element=None) ——点击鼠标左键,不松开

context_click(on_element=None) ——点击鼠标右键

double_click(on_element=None) ——双击鼠标左键

drag_and_drop(source, target) ——拖拽到某个元素然后松开

drag_and_drop_by_offset(source, xoffset, yoffset) ——拖拽到某个坐标然后松开

key_down(value, element=None) ——按下某个键盘上的键

key_up(value, element=None) ——松开某个键

move_by_offset(xoffset, yoffset) ——鼠标从当前位置移动到某个坐标

move_to_element(to_element) ——鼠标移动到某个元素

move_to_element_with_offset(to_element, xoffset, yoffset) ——移动到距某个元素(左 上角坐标)多少距离的位置

perform() ——执行链中的所有动作

release(on_element=None) ——在某个元素位置松开鼠标左键

send_keys(*keys_to_send) ——发送某个键到当前焦点的元素

send_keys_to_element(element, *keys_to_send) ——发送某个键到指定元素 

模拟练习:

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

driver = webdriver.Chrome(executable_path="D:\Google\Chrome\Application\chromedriver.exe")
driver.implicitly_wait(10)
driver.maximize_window()
# 模拟点击事件(点击百度知道的那个搜索答案)
driver.get('https://zhidao.baidu.com/')
click_btn = driver.find_element_by_xpath('//button[@id="search-btn"]').click()
#模拟鼠标移动(拖到头像,让头像展开)
driver.get('https://zhidao.baidu.com/')
write = driver.find_element_by_xpath('//div[@class="cover animate"]')
action = ActionChains(driver)
action.move_to_element(write).perform()  # 移动到 write,显示“Mouse moved”

模拟百度知道验证码登录

from PIL import Image
import pytesseract
from urllib import request
driver.get("https://zhidao.baidu.com")
proxy = {'http': '123.56.169.22:3128'}
    # 创建 ProxyHandler
proxy_support = request.ProxyHandler(proxy)
    # 创建 Opener
opener = request.build_opener(proxy_support)
login = driver.find_element_by_id('userbar-login').click()
username = driver.find_element_by_id("TANGRAM__PSP_10__footerULoginBtn").click()
driver.find_element_by_id("TANGRAM__PSP_10__userName").clear()
driver.find_element_by_id("TANGRAM__PSP_10__userName").send_keys(15617391675)
driver.find_element_by_id("TANGRAM__PSP_10__password").clear()
driver.find_element_by_id("TANGRAM__PSP_10__password").send_keys("011852zz")
import time
time.sleep(2)
driver.save_screenshot('./images/baidu.png')
element=driver.find_element_by_xpath('//span[@id="TANGRAM__PSP_10__verifyCodeImgParent"]/img[1]')
#location办法可能会有偏移,但是每次都会锁定了了验证码的位置,所以稍微修正一下location的定位,后面都管用
left   = element.location['x']#验证码图片左上角横坐标
top    = element.location['y']#验证码图片左上角纵坐标
right  = left + element.size['width']#验证码图片右下角横坐标
bottom = top + element.size['height']#验证码图片右下角纵坐标
im=Image.open('./images/baidu.png')
im_crop=im.crop((left,top,right,bottom))#这个im_crop就是从整个页面截图中再截出来的验证码的图片
im_crop.save('./images/logo.png')
img =Image.open('./images/logo.png')
img.show()
#可以看出,验证码文本一般都是黑色的,背景则会更加明亮,所以我们可以通过检查像素是否为黑色将文本分离出来,该处理过程又被称为阈值化。通过 Pillow 可以很容易地实现该处理过程。
gray = img.convert('L') #灰度化
gray.show()
import tesserocr
result = tesserocr.image_to_text(gray)
print(result)
# print(pytesseract.image_to_string(gray))
# driver.find_element_by_id("TANGRAM__PSP_10__verifyCode").clear()
# driver.find_element_by_id("TANGRAM__PSP_10__verifyCode").send_keys(result)
# sleep(10)
# click_name = driver.find_element_by_id("TANGRAM__PSP_10__submit")
# click_name.click()
# s1 = Select(driver.find_element_by_id('user-name'))

猜你喜欢

转载自blog.csdn.net/lzz781699880/article/details/82025310