一、Selenium中的WebDriver常用方法:

  1. get(url):get方式请求url
driver.get('http://www.baidu.com')
  1. back():浏览器后退操作
driver.back()
  1. forward():浏览器前进操作
driver.forward()
  1. save_screenshot(name):保存截图
driver.save_screenshot('baidu.png')
  1. title():获取title标签,或者使用title属性
driver.title()
  1. 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.元素等待的三种方法

  1. 强制等待 sleep(秒)
    如果使用sleep(10),表示让程序在此等待10秒钟。无论发生什么事,都会在10秒后再去执行后续的代码
  2. 隐形等待 implicitly_wait(秒)
    设置最长等待时间,在这个时间内只要有个时间点加载完成,则执行下一步代码,比sleep 智能,能够自主判断。 但是,整个driver 的会话周期,设置一次即可,全局都可用。
  3. 显性等待 使用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}")