web automation (python) - selenium basic tool use

WebDriver basic operations

Start your browser generates driver--

#启动谷歌浏览器,预先安装chromedrvier插件
from selenium import webdriver
driver = webdriver.Chrome()

Open the page

driver.get(url)

Window operation

  • Resizing

    # 窗口最大化
    driver.maxmize_window()
    # 窗口最小化
    driver.minmize_window()
    # 设定宽高,单位px
    driver.set_window_size()
  • forward, backward

    # 后退
    driver.back()
    # 前进
    driver.forward()
    # 刷新
    driver.refresh()
  • Close and exit

    # 关闭
    driver.quit()
    # 退出
    driver.close()

 Targeting

  1. classification:

    element and element (Back to list)

  2. Targeting

    # 利用ID定位
    driver.find_element_by_id(cont)
    # 利用NAME定位
    driver.find_element_by_name(cont)
    # 利用CLASS_NAME定位
    driver.find_element_by_class_name(cont)
    # 利用CSS_SELECTOR定位
    driver.find_element_by_css_selector(cont)
    # 利用XPATH定位,分为相对路径和绝对路径
    driver.find_element_by_xpath(cont)
    # 利用LINK_TEXT定位
    driver.find_element_by_link_text(cont)
    # 利用TAG_NAME定位
    driver.find_element_by_tag_name(cont)
  3. priority

         ID> NAME>CSS_SELECTOR>XPATH

The basic keyboard and mouse operations

  • click () # Click
  • send_keys () # input
  • clear () # Empty

Standby mode

Forced to wait

import time
time.sleep(S)

Implicit wait

driver.implicitly_wait(S)

Display wait

# 导入模块
from selenium.webdriver.support.ui import WebDriverWait
# 打来页面时开始查询元素,找到后立即执行
WebDrivewrWait(driver,timeout,intberval).until(lambda driver: driver.find_XXX(XX))

Window switch

iframe switch

# 切进
driver.switch_to.frame(ele)
# 切进去,多层时需要一层一层切换,切换回时直接退回默认位置
driver.switch_to.default_content()

alert (pop) switch

# 确定
driver.switch_to.alert.accept()
# 取消
driver.switch_to.alert.dismiss()

windows window switch

# 获得句柄的列表
driver.window_handles()
# 跳转窗口,回到首页使用index=0
driver.seitch_to.window(window_handles[index])

Drop-down selection box

# 导入库
from selenium.Webdriver.support.select import Select
sele_le = driver.find_element_by_id(cont)
# 按下标选择
select(sele_le).select_by_index(intnum)
# 根据值选择
select().deselect_by_visible_text(value)

By Code

Using a universal codes (Development Settings)

Add the cookie use

  1. From login, the way to bypass the authentication code

    driver.add_cookie({"name":"XXX","value":"XXX"})
  2. To get all cookie when you log obtained by looking at the way the interface;

Image recognition techniques (OTP Engine)

Mask codes

File Upload

  1. By send_keys ()

    driver.find_element_by_id("Idvalue").send_keys(path)
    driver.find_element_by_xpath("").click()
  2. By Pykeyboara, in turn need to install pyHook and PyUserInput

  3. Use sikulik jar package

  4. Others, such as AutoIt

Mouse and keyboard

Mouse operation

from selenium.webdriver.common.action_chains import Actionchains
# 用Actionchains增强driver
# 点击右键
ActionChains(driver).context_click(ele).perform()
# 双击
ActionChains(driver).double_click(ele).perform()
# 悬停
ActionChains(driver).move_to_element(ele).perform()
# 长按
ActionChains(driver).click_and_hold(ele).perform()
# ActionChains用于生成用户的行为,所有的行为都存储在ActionChains对象,通过perform()执行存储的行为

Keyboard

from selenium.webdriver.common.keys import Keys
# 直接对元素进行按键操作
ele.send_keys("key")
# 组合按键操作
ele.send_keys(keys.xxx,"key1","key2")

Screenshot

  1. method one:

    driver.get_screenshot_as_file(path+"name.png")
  2. Method Two:

    # 遇到弹窗就截图
    driver.save_screenshot(path+"name.png")
  3. Method three:

    # 保存的是base64()格式的文件值,html测试报告里插入图片会用到
    s=driver.get_screenshot_as_base64()
  4. Method four:

    # 保存二进制文件
    S = driver.get_screenshot_as_png()

js injection

Moving the scroll bar

  1. Mode 1 (only supports scroll bars have the ID):

    js = "var q=document.documentElement.scrollTop=100"
    js_n = "var q=document.documentElement.scrollTop=0"
    driver.execute_script(js_n)
  2. Embodiment 2 (drag into the element):

    target1=dr.find_element_by_xpath("//*[text()='页面']")
    driver.execute_script("arguments[0].scriollIntoView();",target1)

Modify the properties

# 修改某个元素的属性
js = "document.getElementById('idname').name=value"
driver.execute_script(js)

Guess you like

Origin www.cnblogs.com/minshuai/p/12098797.html