Selenium是一个用于测试网站的自动化测试工具,支持各种浏览器包括Chrome、Firefox、Safari等主流界面浏览器。
pip install Selenium
from selenium import webdriver
driver = webdriver.Firefox()
driver.get(r"http://www.baidu.com/")
driver.set_window_size(800,800)
input_first = driver.find_element(By.CLASS_NAME, 'content')
html = input_first.get_attribute('innerHTML')
driver.quit() # don't forget to quit the driver!
无界面模式加载网页
options = webdriver.FirefoxOptions()
options.add_argument("--headless") #设置火狐为headless无界面模式
options.add_argument("--disable-gpu")
driver = webdriver.Firefox(options=options)
定位一个元素 | 定位多个元素 | 含义 |
find_element_by_id | find_elements_by_id | 通过元素id定位 |
find_element_by_name | find_elements_by_name | 通过元素name定位 |
find_element_by_xpath | find_elements_by_xpath | 通过xpath表达式定位 |
find_element_by_link_text | find_elements_by_link_text | 通过完整超链接定位 |
find_element_by_partial_link_text | find_elements_by_partial_link_text | 通过部分链接定位 |
find_element_by_tag_name | find_elements_by_tag_name | 通过标签定位 |
find_element_by_class_name | find_elements_by_class_name | 通过类名进行定位 |
find_elements_by_css_selector | find_elements_by_css_selector | 通过css选择器进行定位 |
通过id定位:
driver.find_element_by_id("kw")
通过name定位:
driver.find_element_by_name("wd")
通过class name定位:
driver.find_element_by_class_name("s_ipt")
通过tag name定位:
driver.find_element_by_tag_name("input")
通过xpath定位,几个常用写法:
dr.find_element_by_xpath("//*[@id='kw']")
dr.find_element_by_xpath("//*[@name='wd']")
dr.find_element_by_xpath("//input[@class='s_ipt']")
dr.find_element_by_xpath("/html/body/form/span/input")
dr.find_element_by_xpath("//span[@class='soutu-btn']/input")
dr.find_element_by_xpath("//form[@id='form']/span/input")
dr.find_element_by_xpath("//input[@id='kw' and @name='wd']")
通过css定位,几个常用写法:
dr.find_element_by_css_selector("#kw")
dr.find_element_by_css_selector("[name=wd]")
dr.find_element_by_css_selector(".s_ipt")
dr.find_element_by_css_selector("html > body > form > span > input")
dr.find_element_by_css_selector("span.soutu-btn> input#kw")
dr.find_element_by_css_selector("form#form > span > input")
通过link text定位:
dr.find_element_by_link_text("新闻")
通过partial link text定位:
dr.find_element_by_partial_link_text("新")
size属性返回元素尺寸
size = driver.find_element_by_name("wd").size
print(size) #size属性,返回元素的尺寸,表单输入框之类的width、height等
text属性返回元素文本
text = driver.find_element_by_id("demo").text
print(text) #text属性,获取元素的文本,可以用力判断打开的页面是否是预期的。
get_attribute()方法获取属性值
attribute = driver.find_element_by_xpath(".//input[@id='kw']").get_attribute('maxlength')
print(attribute) #get_attribute()方法可以获取属性值
is_displayed()方法返回该元素是否设置可见
result = driver.find_element_by_partial_link_text("新闻").is_displayed()
print(result) #is_displayed() 元素是否设置可见,可见返回true则false
刷新浏览器
driver.refresh()
设置浏览器的大小
driver.set_window_size(1400,800)
单击元素
element = driver.find_element_by_link_text("新闻")
element.click()
在 WebDriver 中, 将这些关于鼠标操作的方法封装在 ActionChains 类提供。
鼠标左键单击
#定位到需要左键单击的元素
left_click = driver.find_element(By.ID,'ID')
#使用perform()执行action
ActionChains(driver).click(left_click).perform()
鼠标右键操作
#定位到需要右击的元素
right_click = driver.find_element_by_link_text("jemeter")
#使用perform()执行action
ActionChains(driver).context_click(right_click).perform()
鼠标悬停
attrible = driver.find_element_by_link_text("设置")
ActionChains(driver).move_to_element(attrible).perform()
鼠标拖放操作
drag_and_drop(source,target) 在源元素上按住鼠标左键,然后移动到目标元素上释放。
#定位元素的初始位置
source = driver.find_element_by_css_selector("")
#定位元素的要移动到的位置
target = driver.find_element_by_name("")
#执行元素的拖放操作
ActionChains(driver).drag_and_drop(source,target).perform()