Selenium 自动化测试工具
1 介绍
Selenium是浏览器的自动化测试工具,使用它可以控制浏览器各种点击等操作。
2 环境搭建
先安装Chrome等浏览器,然后安装对应版本的ChromeDriver驱动程序,然后pip安装Selenium
2 代码示例
看完,这个程序,你就掌握Selenium的基本用法
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver import ActionChains from selenium.common.exceptions import NoSuchElementException import time browser=webdriver.Chrome() # 实例化一个Chrome try: browser.get('https://www.baidu.com/') # 百度======================================================================= # # 例子测试 # input = browser.find_element_by_id('kw') # 查找对应节点 # input.send_keys('python') # input.send_keys(Keys.ENTER) # wait = WebDriverWait(browser, 10) # wait.until(EC.presence_of_element_located((By.ID, 'content_left'))) # print(browser.current_url) #当前页面url # print(browser.get_cookies()) # 当前页cookies # print(browser.page_source) # 当前页source html # 查找节点的方法 # input_first=browser.find_element_by_id('kw') # input_second = browser.find_element_by_css_selector('#kw') # input_third = browser.find_element_by_xpath('//*[@id="kw"]') # print(input_third,input_second,input_third) # browser.get('https://www.taobao.com') # 淘宝======================================================================= # 多个节点 # # lis=browser.find_elements_by_css_selector('.service-bd li') # 主要是将element换成elements # lis=browser.find_elements(By.CSS_SELECTOR,'.service li') # 和上面一样的 # print(lis) # 节点交互 # input=browser.find_element_by_id('q') # input.send_keys('iphone') # 输入文字 # time.sleep(5) # input.clear() # 清空文字 # input.send_keys('ipad') # button=browser.find_element_by_class_name('btn-search') # button.click() #按钮点击 # 选项卡管理 browser.execute_script('window.open()') # 打开一个选项啦 time.sleep(3) print(browser.window_handles) browser.switch_to.window(browser.window_handles[1]) # 跳转到第二个选项卡 browser.get('https://www.taobao.com') # 第二个选项卡访问淘宝 time.sleep(3) browser.switch_to.window(browser.window_handles[0]) # 跳转回第一个选项卡 browser.get('https://zhihu.com/explore') # 第一个选项卡访问知乎发现页 ,这样关闭的时候只会关闭第一个选项卡 # # 前进 后退 # browser.get('https://www.baidu.com/') # browser.get('https://www.zhihu.com/explore') # browser.back() # 后退 # time.sleep(3) # browser.forward() # time.sleep(3) # 延时等待——显示等待 # wait=WebDriverWait(browser,10) # 规定时间加载出来返回节点,没查找出来抛出异常 # input=wait.until(EC.presence_of_element_located((By.ID,'q'))) # button=wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,'.btn-search'))) # print(input,button) # browser.get('https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable') # 菜鸟教程======================== # # 动作链 # browser.switch_to.frame('iframeResult') # 切换iframe # source=browser.find_element_by_css_selector('#draggable') # target=browser.find_element_by_css_selector('#droppable') # actions=ActionChains(browser) # 创建一个动作链对象 # actions.drag_and_drop(source,target) # 调用actions的拖拽方法 # actions.perform() # 执行方法 # # 切换Frame # browser.switch_to.frame('iframeResult') # try: # logo=browser.find_element_by_class_name('logo') # except NoSuchElementException: # print('No Logo') # browser.switch_to.parent_frame() # logo=browser.find_element_by_class_name('logo') # 切换回父级frame # print(logo) # print(logo.text) # browser.get('https://zhihu.com/explore') # 知乎 发现页============================================================== # # 执行JavaScript # browser.execute_script('window.scrollTo(0,document.body.scrollHeight)') # time.sleep(3) # browser.execute_script('alert("To Bootom!")') # time.sleep(3) # browser.switch_to.alert.accept() # # 获取节点信息 # logo=browser.find_element_by_id('Popover1-toggle') # print(logo) # print(logo.get_attribute('class')) # 获取属性 # input=browser.find_element_by_class_name('ExploreSpecialCard-title') # print(input.text) # 获取文本 # print(input.id) # 获取id # print(input.location) # 获取location # print(input.tag_name) # 获取tag_name # print(input.size) # 获取大小 # # Cookies # print(browser.get_cookies()) # browser.add_cookie({'name':'name','domain':'www.zhihu.com','value':'germey'}) # 添加一个cookie # print(browser.get_cookies()) # browser.delete_all_cookies() # 删除所有的cookies # print(browser.get_cookies()) # 延时等待-隐式等待 # browser.implicitly_wait(10) #在找不到节点的时候等待10s之后抛出异常 # input=browser.find_element_by_class_name('zu-top-add-question') # 这个节点不存在 # print(input) finally: browser.close()