Selenium WebDrivers 学习记录 - 定位元素

Selenium 是一个 Web 的自动化测试工具,它支持所有主流的浏览器(IE,Chrome,Firefox,包括 PhantomJS 这些无界面的浏览器),使用之前需要下载对应的浏览器驱动(下载地址见文末)

模拟案例 - 进入艺赛旗官网并登陆社区

#引用模块
from selenium import webdriver
#引用键类,键类提供键在键盘像ENTER,F1,ALT等。
from selenium.webdriver.common.keys import Keys

#创建FChrome WebDriver的实例
driver = webdriver.Chrome()
#在将控件返回到测试或脚本之前,WebDriver将等待页面完全加载
# 注意:如果页面在加载时使用了大量的AJAX,那么WebDriver可能不知道它何时完全加载
driver.get("https://www.i-search.com.cn/")
#最大化窗口
driver.maximize_window()
#通过文字链接定位
support=driver.find_element_by_link_text("社区支持")
support.click()
#通过class属性获取登录按钮
login=driver.find_element_by_class_name("unlogin")
login.click()
#通过ID找到用户名和密码输入框
user=driver.find_element_by_id("nameOrEmail")
user.send_keys("529*****@qq.com")
password=driver.find_element_by_id("loginPassword")
password.send_keys("AAAAAA")
#模拟按钮Enter
password.send_keys(Keys.ENTER)

按 ID 定位,按名称定位,通过 XPath 定位

<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>

'''按ID定位'''
login_form = driver.find_element_by_id('loginForm')
'''按名称查找'''
username = driver.find_element_by_name('username')
password = driver.find_element_by_name('password')
'''通过XPath定位'''
#绝对路径(如果HTML仅稍微更改,则会中断)
login_form = driver.find_element_by_xpath("/html/body/form[1]")
#HTML中的第一个表单元素
login_form = driver.find_element_by_xpath("//form[1]")
#表单元素,其属性名为id,值为loginForm
login_form = driver.find_element_by_xpath("//form[@id='loginForm']")
#“清除”按钮元素可以像这样定位:
clear_button = driver.find_element_by_xpath("//input[@name='continue'][@type='button']")
clear_button = driver.find_element_by_xpath("//form[@id='loginForm']/input[4]")

按标签名称定位元素

<html>
 <body>
  <h1>Welcome</h1>
  <p>Site content goes here.</p>
</body>
<html>

#标题(h1)元素可以像这样定位:
heading1 = driver.find_element_by_tag_name('h1')

按类名定位元素

<html>
 <body>
  <p class="content">Site content goes here.</p>
</body>
<html

#“p”元素可以像这样定位:
content = driver.find_element_by_class_name('content')

通过 CSS 选择器定位元素

<html>
 <body>
  <p class="content">Site content goes here.</p>
  </body>
<html>
#“p”元素可以像这样定位:
content = driver.find_element_by_css_selector('p.content')

要查找多个元素(这些方法将返回一个列表)

  • 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

selenium 模块 -selenium.zip
phantomjs 无界面浏览器 -phantomjs211windows.zip
Chrome 驱动
IE 驱动 (驱动版本号和 Selenium 的版本号一致)
Firefox 驱动