Python Selenium模块
说明
Selenium是Thoughtworks公司的一个集成测试的强大工具,Selenium 是 ThoughtWorks 专门为 Web 应用程序编写的一个验收测试工具;使用 Selenium 的最大好处是: Selenium 测试直接在浏览器中运行,就像真实用户所做的一样。在浏览器加载js后,便可以通过xpath来解析网页了。直接pip install selenium 安装完成
实例
|
|
页面交互
|
|
查询如下:
注意
:当使用XPATH
时,你必须注意,如果匹配超过一个元素,只返回第一个元素。 如果上面也没找到,将会抛出 NoSuchElementException
异常。
常用方法:
查找元素
Selenium提供的方法:
- find_element
- find_element_by_id
- find_element_by_name
- find_element_by_xpath
- find_element_by_link_text
- find_element_by_partial_link_text
- find_element_by_tag_name
- find_element_by_class_name
- find_element_by_css_selector
一次查找多个元素(返回list列表):
- find_elements
- find_elements_by_name
- find_elements_by_xpath
- find_elements_by_link_text
- find_elements_by_partial_link_text
- find_elements_by_tag_name
- find_elements_by_class_name
- find_elements_by_css_selector
查找元素实例
find_element_by_id
123456789101112<html><body><form id="loginForm"><input name="username" type="text" /><input name="password" type="password" /><input name="continue" type="submit" value="Login" /></form></body><html>可以这样查找表单(form)元素login_form = driver.find_element_by_id('loginForm')find_element_by_name
123456789101112131415<html><body><form id="loginForm"><input name="username" type="text" /><input name="password" type="password" /><input name="continue" type="submit" value="Login" /><input name="continue" type="button" value="Clear" /></form></body><html>name属性为 username & password 的元素可以像下面这样查找username = driver.find_element_by_name('username')password = driver.find_element_by_name('password')continue = driver.find_element_by_name('continue')find_element_by_xpath
12345678910111213141516171819202122<html><body><form id="loginForm"><input name="username" type="text" /><input name="password" type="password" /><input name="continue" type="submit" value="Login" /><input name="continue" type="button" value="Clear" /></form></body><html>可以这样查找表单(form)元素login_form = driver.find_element_by_xpath("/html/body/form[1]")login_form = driver.find_element_by_xpath("//form[1]")login_form = driver.find_element_by_xpath("//form[@id='loginForm']")username = driver.find_element_by_xpath("//form[input/@name='username']")username = driver.find_element_by_xpath("//form[@id='loginForm']/input[1]")username = driver.find_element_by_xpath("//input[@name='username']")clear_button = driver.find_element_by_xpath("//input[@name='continue'][@type='button']")clear_button = driver.find_element_by_xpath("//form[@id='loginForm']/input[4]")find_element_by_link_text
1234567891011<html><body><p>Are you sure you want to do this?</p><a href="continue.html">Continue</a><a href="cancel.html">Cancel</a></body><html>continue.html 超链接可以被这样查找到:continue_link = driver.find_element_by_link_text('Continue')continue_link = driver.find_element_by_partial_link_text('Conti')find_element_by_tag_name
123456789<html><body><h1>Welcome</h1><p>Site content goes here.</p></body><html>h1 元素可以如下查找heading1 = driver.find_element_by_tag_name('h1')find_element_by_class_name
12345678<html><body><p class="content">Site content goes here.</p></body><html>p 元素可以如下查找content = driver.find_element_by_class_name('content')find_element_by_css_selector
12345678<html><body><p class="content">Site content goes here.</p></body><html>p 元素可以如下查找:content = driver.find_element_by_css_selector('p.content')
等待加载
显式等待
显式等待是你在代码中定义等待一定条件发生后再进一步执行你的代码,最糟糕的案例是使用time.sleep(),它将条件设置为等待一个确切的时间段
隐式等待
如果某些元素不是立即可用的,隐式等待是告诉WebDriver去等待一定的时间后去查找元素