Selenium Webdriver是Selenium里面最重要的东西,提供了web自动化的各种语言调用接口库,主要是是通过各种浏览器的驱动(web driver)来驱动浏览器的,下面是其原理的示意图:
由上图可知,Selenium Webdriver库中所有API的调用,都需要先获取浏览器实例driver,例如Chrome,Firefox,IE浏览器实例的获取方法:
- driver=webdriver.Chrome() #初始化一个谷歌浏览器实例
- driver=webdriver.firefox() #初始化一个火狐浏览器实例
- driver=webdriver.ie() #初始化一个IE浏览器实例
浏览器完整的打开—关闭调用流程:
from selenium import webdriver #导入webdriver包
driver=webdriver.Chrome() #初始化一个谷歌浏览器实例
driver.maximize_window() #最大化浏览器
driver.implicitly_wait(8) #设置隐式时间等待
driver.get("https://www.baidu.com") #通过get方法打开一个url站点
driver.quit() #关闭并退出浏览器
1.浏览器属性(driver attributes)
浏览器属性的调用方式是:driver.属性值,属性值包括一些常用的变量和函数。
常用变量有:
- driver.current_url:用于获得当前页面的URL
- driver.title:用于获取当前页面的标题
- driver.page_source:用于获取页面html源代码
- driver.current_window_handle:用于获取当前窗口句柄
- driver.window_handles:用于获取所有窗口句柄
常用函数有:
- driver.find_element*():定位元素
- driver.get(url):浏览器加载url
- driver.forward():浏览器向前(点击向前按钮)
- driver.back():浏览器向后(点击向后按钮)
- driver.refresh():浏览器刷新(点击刷新按钮)
- driver.close():关闭当前窗口,或最后打开的窗口
- driver.quit():关闭所有关联窗口,并且安全关闭session
- driver.maximize_window():最大化浏览器窗口
- driver.get_window_size():获取当前窗口的长和宽
- driver.get_screenshot_as_file(filename):截取当前窗口
- driver.implicitly_wait(秒):隐式等待,通过一定的时长等待页面上某一元素加载完成
- driver.switch_to.window(窗口句柄):切换到新窗口
- driver.switch_to.alert():警告框处理。处理JavaScript所生成的alert,confirm,prompt
- driver.execute_script(js):调用js
- driver.get_cookies():获取当前会话所有cookie信息
2.页面元素属性(WebElement attributes)
页面元素属性的调用方式是:
find_element*().属性值
或者分成两步:
element=driver.find_element*
element.属性值
具体操作方式如代码所示:
driver.get("https://www.baidu.com")
#方法一
driver.find_element_by_id("kw").send_keys("Selenium")
#方法二:
element=driver.find_element_by_id("kw")
element.send_keys("Selenium")
属性值也是包括一些常用的变量和函数。
常用变量有:
- element.size:获取元素的尺寸
- element.text:获取元素的文本
- element.tag_name:获取标签名称
常用函数有:
- element.clear():清除文本
- element.send_keys(value):输入文字或键盘按键(需导入Keys模块)
- element.click():单击元素
- element.get_attribute(name):获得属性值
- element.is_displayed():返回元素结果是否可见(True 或 False)
- element.is_selected():返回元素结果是否被选中(True 或 False)
- element.find_element*():定位元素,用于二次定位