webdriver

selenium 文件上传

房东的猫 提交于 2020-02-12 11:45:23
一般分两个场景:一种是input标签,这种可以用selenium提供的send_keys()方法轻松解决; 另外一种非input标签实现起来比较困难,可以借助autoit工具或者SendKeys第三方库。 本篇以博客园的上传图片为案例,通过send_keys()方法解决文件上传问题 一、识别上传按钮 1.点开博客园编辑器里的图片上传按钮,弹出”上传本地图片”框。 2.用firebug查看按钮属性,这种上传图片按钮有个很明显的标识,它是一个input标签,并且type属性的值为file。 只要找到这两个标识,我们就可以直接用send_keys()方法上传文件了。 1 from selenium import webdriver 2 import time 3 profile_directory = r'C:\Users\ct-wyl\AppData\Roaming\Mozilla\Firefox\Profiles\lt6n8ynh.default' 4 profile = webdriver.FirefoxProfile(profile_directory) 5 driver = webdriver.Firefox(profile) 6 driver.get('https://www.cnblogs.com/FlyToDream') 7 time .sleep(2) 8 driver

WebDriver下载地址

老子叫甜甜 提交于 2020-02-12 07:56:58
http://chromedriver.storage.googleapis.com/index.html https://blog.csdn.net/ccggaag/article/details/76094025 chromedriver版本 支持的Chrome版本 v2.32 v59-61 v2.31 v58-60 v2.30 v58-60 v2.29 v56-58 v2.28 v55-57 v2.27 v54-56 v2.26 v53-55 v2.25 v53-55 v2.24 v52-54 v2.23 v51-53 v2.22 v49-52 v2.21 v46-50 v2.20 v43-48 v2.19 v43-47 v2.18 v43-46 v2.17 v42-43 v2.13 v42-45 v2.15 v40-43 v2.14 v39-42 v2.13 v38-41 v2.12 v36-40 v2.11 v36-40 v2.10 v33-36 v2.9 v31-34 v2.8 v30-33 v2.7 v30-33 v2.6 v29-32 v2.5 v29-32 v2.4 v29-32 所有chromedriver均可在下面链接中下载到: http://chromedriver.storage.googleapis.com/index.html 转载自:https:/

等待机制

老子叫甜甜 提交于 2020-02-10 20:47:08
为什么需要等待 当进行自动化测试的时候: from selenium import webdriver driver = webdriver.Chrome() driver.get("https://www.baidu.com") driver.find_element_by_id("kw").send_keys("听雨危楼-cnblogs") driver.find_element_by_id("su").click() # import time # time.sleep(3) driver.find_element_by_link_text("听雨危楼 - 博客园").click() driver.quit() 上述代码如果不睡几秒的话,很可能会报如下报错: selenium.common.exceptions.NoSuchElementException 没有找到标签元素,当然,可能原因是找错了标签,但很可能是这个标签由于网速等原因迟迟没有加载出来,你就直接获取这个标签,很明显是报错,现有的简单粗暴的解决办法就是 time.sleep(3) ,睡几秒,也就是设置线程等待,等这个标签加载出来之后,再去使用。这么着虽然简单,但是相对死板,因为我们不知道这个标签什么时候加载出来,就大概写死睡个几秒,这可以,但如果这个标签在极短的时间内就加载出来了,而你还在睡....... 所以

webdriver中的等待——主要讲解WebDriverWait()

谁说我不能喝 提交于 2020-02-10 10:59:12
webdriver中的等待——主要讲解WebDriverWait() 强制等待:sleep() 隐式等待:implicitly_wait() 显示等待:WebDriverWait() 与until()或者until_not()方法结合使用 WebDriverWait与expected_conditions结合使用 显示等待,自定义等待条件 强制等待:sleep() import time sleep(5) #等待5秒 设置固定休眠时间,单位为秒。 由python的 time 包提供, 导入 time 包后就可以使用。 缺点: 不智能,使用太多的sleep会影响脚本运行速度。 隐式等待:implicitly_wait() driver.implicitly_wait(10) #隐式等待10秒 由webdriver提供的方法,一旦设置,这个隐式等待会在WebDriver对象实例的整个生命周期起作用,它不针对某一个元素,是全局元素等待,即在定位元素时,需要等待页面全部元素加载完成,才会执行下一个语句。如果超出了设置时间的则抛出异常。 缺点: 当页面某些js无法加载,但是想找的元素已经出来了,它还是会继续等待,直到页面加载完成(浏览器标签左上角圈圈不再转),才会执行下一句。某些情况下会影响脚本执行速度。 显示等待:WebDriverWait() WebDriverWait(driver

4、selenium webdriver + java 进行元素定位时的页面跳转问题

孤人 提交于 2020-02-09 18:56:46
在使用selenium-Java对元素进行定位时经常遇见以下两种问题: 问题一:在当前页面进行跳转时,提示 Unable to locate element 原因:driver在打开网页时,网页加载速度过慢,导致接下来的语句找不到元素; 解决办法:在跳转之前Thread.sleep(3000); 问题二:在页面跳转时产生窗口切换,提示Unable to locate element 原因:窗口句柄还停留在上一个页面,需要对窗口进行切换,获得当前句柄之后,再进行跳转,就不会出现问题了。 java实现如下: /* * 窗口切换,获取窗口句柄 */ String winHandleBefore = driver.getWindowHandle(); for(String winHandle : driver.getWindowHandles()) { if (winHandle.equals(winHandleBefore)) { continue; } driver.switchTo().window(winHandle); break; } driver.findElement(By.linkText("基本信息")).click(); try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto

selenium

淺唱寂寞╮ 提交于 2020-02-09 14:35:47
原文地址: https://blog.csdn.net/xiaoxiaochunmei/article/details/89226424 调用chromeOptions from selenium import webdriver options = webdriver.ChromeOptions() ...... browser = webdriver.Chrome(chrome_options=option) 去掉提示“正在受到自动测试软件的控制” option.add_argument('disable-infobars') 设置窗口大小 option.add_argument('--window-size=1366,768') 或者 browser.set_window_size(480, 800) #移动端大小 最大化运行 browser.maximize_window() or option.add_argument('--start-maximized') 设置编码格式 option.add_argument('lang=zh_CN.UTF-8') 设置UA请求头 option.add_argument('User-Agent=Mozilla/5.0') 无界面浏览器 option.add_argument('--headless') 禁止加载图片 my_prefs

Clarification of the cause of mixing Implicit and Explicit waits of Selenium doc

左心房为你撑大大i 提交于 2020-02-09 01:08:08
问题 I was reading the SeleniumHQ documentation and came across the following statements. "WARNING: Do not mix implicit and explicit waits. Doing so can cause unpredictable wait times. For example setting an implicit wait of 10s and an explicit wait of 15 seconds, could cause a timeout to occur after 20 seconds." For some reason, I cannot get this to make sense. The total timeout 20s is the main confusion point for me. Can anyone explain if I am missing something? EDIT My question is not about the

学习笔记之自动化测试模型_02

醉酒当歌 提交于 2020-02-08 18:26:45
模块化实例 以126邮箱来演示代码如下: from selenium import webdriver driver = webdriver . Firefox ( ) driver . implicitly_wait ( 10 ) driver . get ( "http://www.126.com" ) #登陆 driver . find_element_by_link_text ( "密码登录" ) . click ( ) #找到用户名和密码登录所在的frame层,这里参数为空,是因为这个frame的那么为空 driver . switch_to_frame ( "" ) #清空文本框内容 driver . find_element_by_xpath ( "//*[@name='email' and @data-loginname='loginEmail']" ) . clear ( ) #输入用户名 driver . find_element_by_xpath ( "//*[@name='email' and @data-loginname='loginEmail']" ) . send_keys ( "username" ) #清空文本框内容 driver . find_element_by_name ( "password" ) . clear ( ) #输入密码

Selenium - 简介

馋奶兔 提交于 2020-02-07 19:41:10
selenium是什么? Selenium是最广泛使用的开源Web UI(用户界面)自动化测试套件之一。它最初由杰森·哈金斯(Jason Huggins)于2004年开发,作为 Thought Works 的内部工具。Selenium支持跨不同浏览器,平台和编程语言的自动化。 Selenium可以轻松部署在Windows,Linux,Solaris和Macintosh等平台上。此外,它支持IOS(IOS,Windows Mobile和Android)等移动应用程序的OS(操作系统)。 Selenium通过使用特定于每种语言的驱动程序支持各种编程语言。Selenium支持的语言包括C#,Java,Perl,PHP,Python和Ruby。目前,Selenium Web驱动程序最受Python和C#欢迎。 Selenium测试脚本可以使用任何支持的编程语言进行编码,并且可以直接在大多数现代Web浏览器中运行。 Selenium支持的浏览器包括Internet Explorer,Mozilla Firefox,Google Chrome和Safari。 应该具备的知识 需要一些JavaScript知识才能学习本教程。 关于一些后端平台的知识不是必需的,但它可以帮助您了解各种Selenium概念。 Selenium功能特性 Selenium有以下功能特性:

python+selenium根据坐标实现自动化测试

时光毁灭记忆、已成空白 提交于 2020-02-07 11:29:48
构思:登录成功后,获取页面坐标后,模拟鼠标操作,实现点击事件 创建类,初始化信息 from selenium import webdriver import time import math,random from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC class auto_test(): def __init__(self): chrome_option = webdriver.ChromeOptions() chrome_option.add_argument('--start-maximized') chrome_option.add_argument('--disable-infobars') self.driver = webdriver.Chrome(chrome_options=chrome_option) #获取初始化值 self.driver.get(url) self.driver.maximize_window() # 获取窗口大小