首页 > 其他 > 详细

selenium(一)

时间:2020-06-25 18:45:05      阅读:109      评论:0      收藏:0      [点我收藏+]

一、原理

  在客户端完成selenium脚本的编写,将脚本传送给selenium服务器,selenium服务器使用浏览器驱动(driver)与浏览器(browser)进行交互。

 

二、核心组件

  WebDriver:使用浏览器提供的API控制浏览器,模拟用户操作浏览器; 

  IDE:录制      

  Grid:分布式

 

三、安装

  pip3 install selenium

   各浏览器驱动下载地址:http://www.seleniumhq.org/download/

 

四、demo1

技术分享图片
1 # 百度一下
2 
3 from selenium import webdriver
4 
5 def test_search():
6     driver = webdriver.Chrome()
7     driver.get(https://www.baidu.com)
8     search = driver.find_element_by_id(su).get_attribute(value)
9     assert search == 百度一下
View Code

 

五、等待方式

  1)显式等待

from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.wait import WebDriverWait

# 显示等待
WebDriverWait(self.driver,10).until(
         expected_conditions.element_to_be_clickable(By.ID,su)
        )

  2)隐式等待

# 隐式等待
self.driver.implicitly_wait(5)

  3)强制等待

import time

time.sleep(3)

  4) demo

技术分享图片
 1 # 访问爱测 https://home.testing-studio.com,点击所有分类,点击答疑区
 2 # 三种等待方式:强制等待、显示等待、隐式等待
 3 
 4 
 5 import time
 6 from selenium import webdriver
 7 from selenium.webdriver.common.by import By
 8 from selenium.webdriver.support import expected_conditions
 9 from selenium.webdriver.support.wait import WebDriverWait
10 
11 
12 class TestHogwarts():
13     def setup(self):
14         self.driver = webdriver.Chrome()
15         self.driver.get(https://home.testing-studio.com)
16         # 隐式等待
17         self.driver.implicitly_wait(5)
18 
19     def teardown(self):
20         time.sleep(3)
21         self.driver.quit()
22 
23 
24     def test_hogwarts(self):
25         # 点击所有分类
26         category_name = (By.XPATH,//*[@id="ember139"]/div/span/span[2]/span)
27         print(category_name)
28         time.sleep(3)
29         print(test)
30         self.driver.find_element_by_xpath(//*[@id="ember21"]).click()
31         time.sleep(3)
32         # 显示等待
33         WebDriverWait(self.driver,10).until(
34             expected_conditions.element_to_be_clickable(category_name)
35         )
36         self.driver.find_element(*category_name).click()
37         # self.driver.find_element_by_xpath(‘//*[@id="ember139"]/div/span/span[2]/span‘).click()
View Code

 

六、常见定位方式

  1)根据id定位

driver.find_element_by_id(su)

  2)根据name定位

driver.find_element_by_name(wd)

  3)根据XPATH定位 (xml path language)

driver.find_element_by_xpath(//*[@id="su"])

  验证XPATH定位是否正确,可以使用console输入$x(‘//*[@id="su"]‘)

  4)根据CSS定位 (css_selector) 

driver.find_element_by_css_selector(#su)

  定位class=one        .one

  定位id=one    #one

   5)  根据link定位

# 全部匹配
driver.find_element_by_link_text(欢迎光临)
# 部分匹配
driver.find_element_by_partial_link_text(欢迎)

      6)  根据tag定位

driver.find_element_by_tag_name(input)

   7)  根据class_name定位

driver.find_element_by_class_name(active)

 

六、selenium常见操作

  1)输入、点击、清除

    对应selenium中的send_keys、click、clear

from selenium import webdriver

driver = webdriver.Chrome()
driver.get(http://www.baidu.com)
driver.find_element_by_name(wd).send_keys(码学课堂)
driver.find_element_by_id(su).click()
driver.find_element_by_name(wd).clear() 

  2)关闭窗口、浏览器

     关闭当前句柄close(),关闭整个进程quite()

from selenium import webdriver

driver = webdriver.Chrome()
driver.get(http://www.baidu.com)
# 关闭当前窗口
driver.close()
# 关闭浏览器
driver.quit()

  3)获取元素属性

     获取元素标签上的属性get_attribute(‘‘value)

     元素的坐标location

     元素的大小size

from selenium import webdriver

driver = webdriver.Chrome()
driver.get(http://www.baidu.com)
search = driver.find_element_by_id(su)
print(search.get_attribute(value))
print(search.location)
print(search.size)


输出:
百度一下
{x: 844, y: 188}
{height: 44, width: 108}

  4)获取网页源代码、刷新页面

     网页源代码page_source

       刷新页面refresh()

from selenium import webdriver

driver = webdriver.Chrome()
driver.get(http://www.baidu.com)
# 刷新页面
driver.refresh()
# 打印当前页面的源码
print(driver.page_source)

  5)设置窗口大小

     最小化窗口minimize_window()

     最大化窗口maximize_window()

     设置窗口的具体大小set_window_size(width,height)

from selenium import webdriver

driver = webdriver.Chrome()
driver.get(http://www.baidu.com)
# 最小化窗口
driver.minimize_window()
# 最大化窗口
driver.maximize_window()
# 将浏览器设置为1000*1000的大小
driver.set_window_size(1000,1000)

 

 

 

 

selenium(一)

原文:https://www.cnblogs.com/hd-test/p/13192273.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!