显示等待(针对1个元素)、隐式等待(针对多个元素)
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
element = WebDriverWait(driver,10,0.5).until(lambda x: x.find_element_by_id("kw"))
element.click()
element = WebDriverWait(driver,5,1).until(EC.presence_of_element_located((By.ID,"kw")))
element.click()
driver.implicitly_wait(10)
切换窗口、frame
driver.switch_to.frame("if")
driver.switch_to.alert().accept()
old_window = driver.current_window_handle
all_handles = driver.window_handles
for handle in all_handles:
if handle != old_window:
driver.switch_to.window(handle)
print(driver.title)
Cookie操作(绕过验证码可以添加cookie到浏览器)
cookies = driver.get_cookies()
cookie = driver.get_cookie('hy')
driver.add_cookie({'username':'hy11','pwd':'21233'})
driver.delete_all_cookies()
JavaScript
js = "window.scrollTo(100,480)"
driver.execute_script(js)
text = "input content to textarea"
js = "var sum=document.getElementById('kw'); sum.value='" + text + "';"
driver.execute_script(js)
判断元素(expected_conditions)
1、判断页面标题
title1 = EC.title_is("51zxw")(driver)
title2 = EC.title_contains("51")(driver)
print(title1) #ture
print(title2) #ture
2、判断弹出框是否存在
result = EC.alert_is_present()(driver)
if result:
result.accept()
else:
print("alert is not exist")
3、判断元素中是否包含指定文本
element = ("name","truomi")
result = EC.text_to_be_present_in_element(element,u'糯米')(driver)
全屏截图
driver.get_screenshot_as_file("d:\error\imag.png")
driver.get_screenshot_as_base64() #截图到html 报告中
单个元素截图
element = driver.find_element_by_css_selector("#kw")
element.screenshot('error.png')
element.screenshot_as_base64()
element.screenshot_as_png()