webdriver

Selenium:三种等待方式详解

给你一囗甜甜゛ 提交于 2020-01-17 15:33:18
目录 一、强制等待 二、隐式等待 三、显示等待 我们在做WEB自动化时,一般要等待页面元素加载完成后,才能执行操作,否则会报找不到元素的错误,这样就要求我们在有些场景下加等待时间。 我们平常用到的有三种等待方式: 强制等待 隐式等待 显示等待 一、强制等待 利用time模块的sleep方法来实现,最简单粗暴的等待方法 代码: # coding = utf-8 from time import sleep from selenium import webdriver # 驱动文件路径 driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe' # 启动浏览器 driver = webdriver.Chrome(executable_path=driverfile_path) # 打开百度首页 driver.get(r'https://www.baidu.com/') # 等待3秒 sleep(3) driver.find_element_by_css_selector("#kw").send_keys("selenium") # 退出 driver.quit() 这种叫强制等待,不管你浏览器是否加载完成,都得给我等待3秒,3秒一到,继续执行下面的代码,不建议用这种等待方法,严重影响代码的执行速度 二

selenium webdriver自动化对日期控件的处理

喜欢而已 提交于 2020-01-17 14:15:19
用JS去掉日期输入框的readOnly属性。 代码如下: ------------------------------------------------------------------------------------- String js="document.getElementById('dateTimeId').removeAttribute('readOnly');document.getElementById('dateTimeId').setAttribute('value','2012-10-25');"; ((JavascriptExecutor) driver).executeScript(js); -------------------------------------------------------------------------------------- getElementById('dateTimeId') 也可以用其他方式获取元素,如:getElementByName('dateTimeIdName')。。。。。 用这种方法比较简便,不过有一个缺点,因为是直接给日期输入框赋值,所以无法验证日期控件是否正常。 来源: https://www.cnblogs.com/liu-ke/p/4200736.html

Selenium webdriver 操作日历控件

耗尽温柔 提交于 2020-01-17 14:12:42
一般的日期控件都是input标签下弹出来的,如果使用webdriver 去设置日期, 1. 定位到该input 2. 使用sendKeys 方法 比如: 但是,有的日期控件是readonly的 比如12306的这个 <input id="train_date" class="inp-txt" type="text" value="2015-03-15" name="back_train_date" autocomplete="off" maxlength="10" readonly="readonly" disabled="disabled"> 这个时候,没法调用WebElement的sendKeys() 方案一:使用JS remove readonly attribute,然后sendKeys 还是以万恶的12306为例: 使用出发日期,将input标签的readonly熟悉去掉 JavascriptExecutor removeAttribute = (JavascriptExecutor)driver; //remove readonly attribute removeAttribute.executeScript("var setDate=document.getElementById(\"train_date\");setDate.removeAttribute(

WebDriver高级应用实例(4)

一个人想着一个人 提交于 2020-01-17 13:52:26
   4.1操作web页面的滚动条   被测网页的网址:   http://v.sogou.com   Java语言版本的API实例代码   import org.testng.annotations.Test; import org.testng.annotations.BeforeMethod; import javax.swing.event.TreeWillExpandListener; import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import org.testng.annotations.AfterMethod; public class scrolling { WebDriver driver; String url ="http://v.sogou.com"; //priority = 1 表示测试用例的第一优先级 @Test(priority = 1) public void

window下搭建Python3.7+selenium3.1.1+pycharm环境

对着背影说爱祢 提交于 2020-01-17 07:59:12
1.安装Python3.7 1.1 下载 Python并安装 Python3.5 (勾选上 Add Python3.7 to PATH) 点击 Install Now,安装完成后将python路径加入环境变量Path 如D:\python35\Python35;D:\python35\Python35\Scripts; 1.2 安装完成之后,win+r 进入 cmd 输入:python 如果出现以下内容说明安装成功了 2.安装selenium3(一般安装好python之后,会自带pip工具) pip install selenium 输入以下命令,有如图显示,说明你已经安装成功了, 3, 安装三大浏览器驱动driver 1.chromedriver 下载地址: https://code.google.com/p/chromedriver/downloads/list 2.Firefox的驱动geckodriver 下载地址: https://github.com/mozilla/geckodriver/releases/ 3.IE的驱动IEdriver 下载地址: http://www.nuget.org/packages/Selenium.WebDriver.IEDriver/ 注意:下载解压后,将chromedriver.exe , geckodriver.exe ,

appium简明教程(6)——启动appium及android模拟器

こ雲淡風輕ζ 提交于 2020-01-17 04:24:06
一般情况下,我们都从命令行启动appium。 windows下,dos命令窗口输入 appium 如果该命令报错,那么请重装appium npm install -g appium 如果安装出错,请自行更换npm源。 npm -g --registry http://registry.cnpmjs.org install appium 然后请打开android的模拟器,如果没有请新建一个虚拟设备。请自行解除设备锁定(手动把屏幕解锁了),以防万一。 本文版权归乙醇所有,欢迎转载,但请注明作者与出处,严禁用于任何商业用途 下面的代码以启动android原生的计算器程序为例 ruby篇 require 'appium_lib' caps = { caps: { platformName: 'Android', appActivity: '.Calculator', appPackage: 'com.android.calculator2' }, appium_lib: { sauce_username: nil, sauce_access_key: nil } } driver = Appium::Driver.new(caps).start_driver 讨论:可以看出ruby lib里面的Appium::Driver类实际上就是原生的webdriver类的子类,当然了

pyppetter 解决 webdriver 检测的注意事项

冷暖自知 提交于 2020-01-17 04:05:43
修改 pyppetter 源码 先感谢两个博主通过他们的博客得到的解决方案,在此只是记录自己遇到的问题 链接: 博客- 修改pyppeteer.launch . 链接: 博客- 修改pyppeteer.connection . 关于下载安装 pyppetter 以及 Chromium 的安装已经很详细了,在此 记录我遇到的问题 以及解决方案 1,安装Chromium,我是mac 系统直接下载的安装包,默认下载到了 download目录下 ,解压不再这个目录, 2,我的解压的目录在 可执行文件默认路径: /Users/myname/Library/Application Support/pyppeteer/local-chromium/575458/chrome-mac/Chromium.app/Contents/MacOS/Chromium 查看文件路径博客里有说, print('可执行文件默认路径:{}'.format(pyppeteer.chromium_downloader.chromiumExecutable.get('mac'))) 解压好放到这个目录下,就可以运行了, pyppeteer 绕过webdriver检测 文章开头的两个博客有两种方案 1 修改pyppeteer.launch 博主 mac 环境 2修改pyppeteer.connection

Linkage error using webdriver in a Netbeans platform project

安稳与你 提交于 2020-01-17 02:53:13
问题 I'm trying to use webdrive in a Netbeans platform project, but i keep getting the following error: java.lang.LinkageError: loader constraint violation in interface itable initialization: when resolving method "com.gargoylesoftware.htmlunit.html.DomNode.getAttributes()Lorg/w3c/dom/NamedNodeMap;" the class loader (instance of org/netbeans/StandardModule$OneModuleClassLoader) of the current class, com/gargoylesoftware/htmlunit/html/DomNode, and the class loader (instance of <bootloader>) for

closing browser after test pass

点点圈 提交于 2020-01-17 01:13:27
问题 public void tearDown() { driver.quit(); } public void signInFacebook(String link) throws InterruptedException { log.header("USER SIGN IN VIA FACEBOOK"); log.step("Click the Sign In Link"); clickLink(link); Thread.sleep(3000); log.log("click success......."); log.step("Click 'Sign in with Facebook' Link "); // Store the current window handle String parentHandle = driver.getWindowHandle(); // Perform the click operation that opens new window driver.findElement(By.cssSelector(CONSTANTs.FB_SIGN

Java+Selenium自动化测试(二)

烈酒焚心 提交于 2020-01-16 20:10:01
Java+Selenium+TestNG自动化测试框架整合 1、简化代码 封装一个定位元素的类,类型为ElementLocation package com.test; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import java.util.concurrent.TimeUnit; /** * 每次定位元素都调用相同的方法 * 将每个方法都封装起来仅供调用 */ public class ElementLocation { /** * 通过id定位元素 * @param id * @param elementId */ public void finElementByID(String id, String elementId, WebDriver driver){ driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); driver.findElement(By.ById.id(id)).sendKeys(elementId); } /** * 通过xpath定位元素 * @param xpath * @param text */ public void findElementByXpath(String