一、Selenium中的WebDriver常用方法:
- get(url):get方式请求url
driver.get('http://www.baidu.com')
- back():浏览器后退操作
driver.back()
- forward():浏览器前进操作
driver.forward()
- save_screenshot(name):保存截图
driver.save_screenshot('baidu.png')
- title():获取title标签,或者使用title属性
driver.title()
- add_cookie(dict):添加cookie,传入dict类型
driver.add_cookie({"":""})
get_cookies():获取当前页面的cookie
driver.get_cookies()
delete_cookie():删除cookie。
driver.delete_cookie({"":""})
delete_all_cookies():删除所有的cookie
driver.delete_all_cookies()
close():关闭页面
driver.close()
quit():关闭浏览器
driver.quit()
maximize_window():最大化
driver.maximize_window()
minimize_window():最小化
driver.minimize_window()
获取当前页面url
driver.current_url
切换frame
driver.switch_to.frame(loc)
selenium get_attribute的几种用法
1.获取元素标签的内容:
get_attribute(‘textContent’)
2.获取元素内的全部HTML:
get_attribute(‘innerHTML’)
3.获取包含选中元素的HTML:
get_attribute('outerHTML')
二、selenium八大元素定位方法
1.通过id查找对应的元素
driver.find_element_by_id(“id”) # id名称
2.通过name查找对应的元素
driver.find_element_by_name(‘name’) # name属性
3.通过标签名查找对应元素
driver.find_element_by_tag_name(‘tag’) # tag:标签名
4.通过xpath来查找对应的元素
driver.find_element_by_xpath(‘xpath’) # xpath: xpath匹配规则
5.通过class属性查找对应的元素
driver.find_element_by_class_name(‘classname’) # classname:class的属性名称
6.通过css选择器查找对应的元素
driver.find_element_by_css_selector(‘css’) # css选择器
7.通过partial_link定位:
find_element_by_partial_link_text()
8.通过link定位:
find_element_by_link_text()
三、WebDriver的交互
点击
driver.find_element_by_id("").click()
提交
driver.find_element_by_id("").submit()
键盘输入
driver.find_element_by_id("").send_keys("")
四、selenium元素等待
1.什么是元素等待呢?
元素等待:js代码执行渲染期间,导致数据/标签加载缓慢,如果元素没有加载完成,直接通过find_element去进行定位,会出现元素不存在的异常。
2.元素等待的三种方法
-
强制等待 sleep(秒)
如果使用sleep(10),表示让程序在此等待10秒钟。无论发生什么事,都会在10秒后再去执行后续的代码 -
隐形等待 implicitly_wait(秒)
设置最长等待时间,在这个时间内只要有个时间点加载完成,则执行下一步代码,比sleep 智能,能够自主判断。 但是,整个driver 的会话周期,设置一次即可,全局都可用。 -
显性等待 使用WebDriverWait 类和expected_conditions 模块 明确等到某个条件满足之后,再去执行下一步操作 程序每隔XX秒看一眼,如果条件成立了,则执行下一步,否则继续等待,知道超过设置的最长时间,然后抛出TimeoutException
WebDriverWait 类:显性等待类 WebDriverWait (drvier,等待时长,轮循周期).until/until_not(判断条件) 判断条件如等待页面某个元素课件,等待新的窗口出现,等待元素包含某个文本内容 ,使用时需要导入相关库:
from selenium.webdriver.support.wait import WebDriverWait
expected_conditions 模块,提供了一系列期望发生的条件使用步骤如下:使用时需要导入相关库:
from selenium.webdriver.support import expected_conditions
等待元素可以被点击:
wait = WebDriverWait(self.driver, timeout, poll_frequency)
wait.until(expected_conditions.element_to_be_clickable(locator))
定义函数实例:
def wait_element_clickable(self, locator, timeout=30, poll_frequency=0.2):
wait = WebDriverWait(self.driver, timeout, poll_frequency)
try:
e = wait.until(expected_conditions.element_to_be_clickable(locator))
except Exception as err:
logging.error(f"元素定位失败:{err}")
else:
return e
等待元素可见
wait = WebDriverWait(self.driver, timeout, poll_frequency)
wait.until(expected_conditions.visibility_of_element_located(locator))
定义函数实例:
def wait_element_visible(self, locator, timeout=20, poll_frequency=0.2):
wait = WebDriverWait(self.driver, timeout, poll_frequency)
try:
e = wait.until(expected_conditions.visibility_of_element_located(locator))
return e
except Exception as err:
logging.error(f"元素定位失败:{err}")