webdriver

How to remove Scrollbar in ChromeDriver, how to change http-agent?

半世苍凉 提交于 2020-02-21 13:11:41
问题 I use IWebDriver driver = new ChromeDriver(options) in C# When I take .GetScreenshot(); , often see scrollbar, is there a way to remove it? 2nd question, how to mock/change http_agent in ChromeDriver? 回答1: Scrollbar issue: Try using Chrome switches when starting webdriver. See http://peter.sh/experiments/chromium-command-line-switches/ or chrome://flags/ in Chrome. You can also make Chromedriver open the url in a popup without scrollbars. You can do this using some Javascript. Or you could

How to remove Scrollbar in ChromeDriver, how to change http-agent?

浪子不回头ぞ 提交于 2020-02-21 13:11:14
问题 I use IWebDriver driver = new ChromeDriver(options) in C# When I take .GetScreenshot(); , often see scrollbar, is there a way to remove it? 2nd question, how to mock/change http_agent in ChromeDriver? 回答1: Scrollbar issue: Try using Chrome switches when starting webdriver. See http://peter.sh/experiments/chromium-command-line-switches/ or chrome://flags/ in Chrome. You can also make Chromedriver open the url in a popup without scrollbars. You can do this using some Javascript. Or you could

Test canvas drawings with Protractor

柔情痞子 提交于 2020-02-20 08:05:28
问题 Is there a way to test if a drawing was made on a canvas using Protractor ? i.e. I draw a rectangle based on user clicks: var shape = new createjs.Shape(); shape.graphics.beginStroke("black"); shape.graphics.drawRect(crd.x, crd.y, crd.width, crd.height); stage.addChild(shape) stage.update() Now I want to make a spec to test if a rectangle was drawn on the specified coordinates and, as a plus, to test if its borders are of color black. Is this possible using Protractor/WebDriverJS API? 回答1:

Selenium中三种等待的使用方式

ぐ巨炮叔叔 提交于 2020-02-20 05:23:39
在UI自动化测试中,必然会遇到环境不稳定,网络慢的情况,这时如果你不做任何处理的话,代码会由于没有找到元素,而报错。这时我们就要用到wait(等待),而在Selenium中,我们可以用到一共三种等待,每一种等待都有自己的优点或缺点,如何选择最优的等待方式呢。来看下这三种等待方式吧。选择合理的等待方式,可以规避网络延迟,代码不稳定问题 time(固定等待) 在开发自动化框架过程中,最忌讳使用Python自带模块的time的sleep方法进行等待,虽然可以自定义等待时间,但当网络条件良好时,依旧按照预设定的时间继续等待,导致整个项目的自动化时间无限延长。不建议使用。(注:脚本调试过程时,还是可以使用的,方便快捷) # 1. 不推荐测试中使用,会完全阻塞代码进程,代码调试时可以使用 import time time.sleep(2) #等待2秒钟后,在开始执行 implicitly_wait(隐式等待) 隐式等待实际是设置了一个最长等待时间,如果在规定时间内网页加载完成,则执行下一步,否则一直等到时间结束,然后执行下一步。这样的隐式等待会有个坑。我们都知道js一般都是放在我们的body的最后进行加载,实际这是页面上的元素都已经加载完毕,我们却还在等带全部页面加载结束。隐式等待对整个driver周期都起作用,在最开始设置一次就可以了。不要当做固定等待使用,到那都来一下隐式等待。 # 2.

selenium的三种等待方式

倾然丶 夕夏残阳落幕 提交于 2020-02-20 05:18:27
selenium有三种等待方式 1、time.sleep() 设置等待最简单的方法就是强制等待,但一般不建议使用,可以在调试的时候进行使用 2、隐性等待 driver.implictily_wait(),隐性等待设置了一个时间,在一段时间内网页是否加载完成,如果完成了,就进行下一步,在设置的时间内没有加载完成,就会报超时加载 from selenium import webdriverimport timedriver=webdriver.Chrome()driver.implicitly_wait(20)#隐性等待,最长等20s,如果完成了,就操作下一步,如果没有完成,就报超时加载driver.get('http://ui.imdsx.cn/uitester/')# 最大化浏览器driver.maximize_window()# 定位到页面顶部js='window.scrollTo(0,0)'driver.execute_script(js)隐性等待的设置是全局性的,在开头设置过后,整个程序的运行过程中都会有效,都会等待页面加载完成,不需要每次设置一遍。3、显示等待每经过多少秒就查看一次local的元素是否可见,如果可见就停止等待,如果不可见 # author=zyqfrom selenium import webdriverimport timedriver=webdriver

selenium基础操作和显示等待

不羁岁月 提交于 2020-02-18 07:15:07
selenium基础操作 ''' selenium基础操作 ''' from selenium import webdriver #1、创建一个驱动 # driver = webdriver.PhantomJS()#无界面的 driver = webdriver . Chrome ( ) # 有界面的 # driver = webdriver.Firefox()# 火狐浏览器也支持selenium #2、请求url driver . get ( 'http://www.baidu.com/' ) #3可以通过dirver对象对页面进行一些操作。 #获取页面元素 ''' driver.find_element_by_id()#通过id属性查找 driver.find_element_by_xpath()#通过xpath路径查找 driver.find_element_by_css_selector()#通过css选择器查找 ''' input_ = driver . find_element_by_id ( 'kw' ) print ( input_ ) #WebElement 对象 #WebElement 对象可以做的事情 input_ . send_keys ( u 'python爬虫' ) #查看元素的位置 # print(input_.location) #查看元素大小 #

使用selenium爬取猫眼,使用mitmproxy过美团检测

泄露秘密 提交于 2020-02-17 01:38:10
ubuntu环境下mitmproxy的安装配置详见: ubuntu环境下使用mitmproxy代理服务器 根据以上的连接,可以成功配置mitmproxy。 接下来,我们就要使用mitmproxy来拦截修改请求。由于猫眼使用的是对webdriver标示进行检测,所以我们可以拦截修改这个标示。拦截配置代码如下,按代码所示,如果拦截成功,会输出100个*的提示 proxy.py def response(flow): if 'webdriver' in flow.response.text: print('*' * 100) print('find web_driver key') flow.response.text = flow.response.text.replace("webdriver", "fuck_that_1") if 'Webdriver' in flow.response.text: print('*' * 100) print('find web_driver key') flow.response.text = flow.response.text.replace("Webdriver", "fuck_that_2") if 'WEBDRIVER' in flow.response.text: print('*' * 100) print('find web

学习进度13

余生长醉 提交于 2020-02-16 19:42:59
Selenium与chromediver的使用学习 demo1: # webdriver.Chrome使用 # 获取driver.page_source import time from selenium import webdriver # 驱动路径 driver_path = r"E:\pythonfile\chromedriver\chromedriver.exe" # 创建驱动 driver = webdriver.Chrome(executable_path=driver_path) driver.get('https://www.baidu.com/') # 打印网页源代码 print(driver.page_source) time.sleep(5) # 关闭当前页面 driver.close() # 关闭整个网页 driver.quit() demo2: 1 # 定位元素 2 3 from selenium import webdriver 4 from selenium.webdriver.common.by import By 5 6 # 驱动路径 7 driver_path = r"E:\pythonfile\chromedriver\chromedriver.exe" 8 9 # 创建驱动 10 driver = webdriver.Chrome

图片懒加载、selenium&phantomjs

我与影子孤独终老i 提交于 2020-02-15 23:00:45
一.什么是图片懒加载?   - 案例分析:抓取站长素材http://sc.chinaz.com/中的图片数据 运行结果观察发现,我们可以获取图片的名称,但是链接获取的为空,检查后发现xpath表达式也没有问题,究其原因出在了哪里呢?   - 图片懒加载概念:     图片懒加载是一种网页优化技术。图片作为一种网络资源,在被请求时也与普通静态资源一样,将占用网络资源,而一次性将整个页面的所有图片加载完,将大大增加页面的首屏加载时间。为了解决这种问题,通过前后端配合,使图片仅在浏览器当前视窗内出现时才加载该图片,达到减少首屏图片请求数的技术就被称为“图片懒加载”。   - 网站一般如何实现图片懒加载技术呢?     在网页源码中,在img标签中首先会使用一个“伪属性”(通常使用src2,original......)去存放真正的图片链接而并非是直接存放在src属性中。当图片出现到页面的可视化区域中,会动态将伪属性替换成src属性,完成图片的加载。   - 站长素材案例后续分析:通过细致观察页面的结构后发现,网页中图片的链接是存储在了src2这个伪属性中 import requests from lxml import etree import urllib.request import os import json headers = { 'User-Agent': 'Mozilla

Selenium WebDriver的使用(三)

人盡茶涼 提交于 2020-02-15 22:59:05
Selenium WebDriver支持驱动众多的浏览器,包括PhantomJS、HtmlUnitDriver等无界面浏览器,他们速度快,但在兼容性上还是有点问题,有时会遇到页面JS执行错误,在一些应用场合,页面内容提取也不够简洁方便。 对于常用的桌面浏览器,兼容性很好,但在执行性能上较无界面浏览器要差一些。一是由于需要开启实体的浏览器加载页面的所有资源并进行页面渲染,这将大量消耗CPU及内存资源,在做多线程并发时尤为明显;二是由于通过浏览器的API进行页面内容的查找提取(Selenium RC是通过JS注入的方式实现的),性能受浏览器制约。那么在使用桌面浏览器进行网页的自动化测试、内容抓取时,提供一些提高性能的方法和建议: 取消不必要的消耗资源的配置,尽可能少的打开关闭操作浏览器窗口,及时关闭不必要的窗口,并始终保持浏览器窗口的最小化。 webDriver对浏览器窗体可以实现指定屏幕坐标位置、窗体尺寸、最大化,但无法最小化浏览器窗口: 1 webDriver.manage().window().setPosition(new Point(0, 0));//指定窗口坐标 2 webDriver.manage().window().setSize(new Dimension(1280,800));//指定窗口大小 3 webDriver.manage().window()