GVKun编程网logo

停止从Selenium Webdriver加载浏览器(selenium停止网页加载)

26

如果您想了解停止从SeleniumWebdriver加载浏览器的相关知识,那么本文是一篇不可错过的文章,我们将对selenium停止网页加载进行全面详尽的解释,并且为您提供关于JavaSelenium

如果您想了解停止从Selenium Webdriver加载浏览器的相关知识,那么本文是一篇不可错过的文章,我们将对selenium停止网页加载进行全面详尽的解释,并且为您提供关于JavaSelenium Webdriver:修改navigator.webdriver标志以防止selenium检测、Selenium WebDriver API 学习笔记(三):浏览器控制、Selenium WebDriver API 学习笔记(二):浏览器控制、Selenium Webdriver cookie /使用Web浏览器已经打开的有价值的信息。

本文目录一览:

停止从Selenium Webdriver加载浏览器(selenium停止网页加载)

停止从Selenium Webdriver加载浏览器(selenium停止网页加载)

我的Selenium Webdriver转到页面并等待该页面完成加载。如果30秒过去,它将超时并且脚本失败。

无论如何,是否要让网络驱动程序在30秒后停止页面加载(例如按浏览器中的“ x”)?这样可以防止驱动程序超时。

我正在使用Chromedriver。

答案1

小编典典

这就是我遇到此问题的方式。在chrome支持之前,我将使用这种方式pageload

我在Chrome中安装了一个名为“停止加载”的扩展程序,并设置了5秒的停止加载时间。

然后,我使用默认设置启动了驱动程序-

DesiredCapabilities capabilities = DesiredCapabilities.chrome();capabilities.setCapability("chrome.switches", Arrays.asList("--user-data-dir="+System.getProperty("user.home")+"\\AppData\\Local\\Google\\Chrome\\User Data"));System.setProperty("webdriver.chrome.driver", "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe");driver = new ChromeDriver(capabilities);

如果Chrome中的网页在5秒钟内未加载,您的扩展程序将在5秒钟内将其杀死,以解决此问题。

在某种程度上,如果您在扩展程序中设置了适当的停止加载时间,它的工作方式就像一个隐式等待

JavaSelenium Webdriver:修改navigator.webdriver标志以防止selenium检测

JavaSelenium Webdriver:修改navigator.webdriver标志以防止selenium检测

如何解决JavaSelenium Webdriver:修改navigator.webdriver标志以防止selenium检测?

从当前的实现开始,一种理想的访问网页而不被检测到的方法是使用ChromeOptions()该类向以下参数添加几个参数:

排除enable-automation开关的集合 关掉 useAutomationExtension 通过以下实例ChromeOptions

Java示例:

System.setProperty("webdriver.chrome.driver", "C:\\Utility\\browserDrivers\\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("excludeSwitches", Collections.singletonList("enable-automation"));
options.setExperimentalOption("useAutomationExtension", false);
WebDriver driver =  new ChromeDriver(options);
driver.get("https://www.google.com/");

Python范例

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option(''useAutomationExtension'', False)
driver = webdriver.Chrome(options=options, executable_path=r''C:\path\to\chromedriver.exe'')
driver.get("https://www.google.com/")

解决方法

我正在尝试使用selenium和铬在网站中自动化一个非常基本的任务,但是以某种方式网站会检测到铬是由selenium驱动的,并阻止每个请求。我怀疑该网站是否依赖像这样的公开DOM变量https://stackoverflow.com/a/41904453/648236来检测selenium驱动的浏览器。

我的问题是,有没有办法使navigator.webdriver标志为假?我愿意尝试修改后重新尝试编译selenium源,但是似乎无法在存储库中的任何地方找到NavigatorAutomationInformation源https://github.com/SeleniumHQ/selenium

任何帮助深表感谢

PS:我还从https://w3c.github.io/webdriver/#interface尝试了以下操作

Object.defineProperty(navigator,''webdriver'',{
    get: () => false,});

但是它仅在初始页面加载后更新属性。我认为网站会在执行脚本之前检测到变量。

Selenium WebDriver API 学习笔记(三):浏览器控制

Selenium WebDriver API 学习笔记(三):浏览器控制

读了虫师《Selenium 2 自动化测试实战 基于 Python 语言》一书,感触颇深,内容非常丰富。现整理下来,供后续学习参考使用。本次主要整理的是元素浏览器控制之二。内容在 “Selenium WebDriver API 学习笔记(二):浏览器控制” 基础上添加。

9. 设置元素等待

①显式等待:WebDriverWait(driver,poll_fequency=0.5,ignored_exceptions=None)
②隐式等待:driver.implicitly_wait(time) time可自定义
③sleep休眠:sleep(time)  time可自定义

10. 定位一组元素

在之前定位单个元素的element后加s
find_elements_by_id();      		
find_elements_by_name();   		
find_elements_by_class_name();  	
find_elements_by_tag_name();     	
find_elements_by_link_text();     	
find_elements_by_partial_link_text();  	
find_elements_by_xpath();  
find_elements_by_css_selector();	

11. 多表单切换

driver.swtich_to.frame()

12. 多窗口切换

driver.switch_to.widow()  用于切换到相应的窗口
current_window_handle  获取当前窗口句柄
window_handles   返回所有窗口的句柄到当前会话

13. 警告框处理

text:返回 alert/confirm/prompt中的文字信息
accept(): 接受现有警告框
dismiss(): 解散现有警告框
send_keys(keysToSend): 发送文本至警告框

14. 上传文件 普通上传:将本地文件的路径作为一个值放在 input 标签中,通过 form 表单将这个值提交给服务器 插件上传:指基于 Flash,JavaScript 或 Ajax 等技术实现上传功能

①send_keys()
如:
from selenium import webdriver
import os

driver = webdriver.Chrome()
file_path=''file:///'' + os.path.abspath(''upfile.html'')
driver.get(file_path)
#定位上传按钮,添加本地文件
driver.find_element_by_name("file").send_keys(''D:\\upload_file.txt'')
driver.quit()
②AutoIt实现上传  下载使用http://www.autoitscript.com/site/

15. 下载文件

from selenium import webdriver
import os
fp=webdriver.Firefoxprofile()
fp.set_preference("browser.download.folderList",2)#0是默认路径,2是指定路径
fp.set_preference("browser.download.manager.showWhenStarting",False)#是否显示开始
fp.set_preference("browser.download.dir",os.getcwd())#用于指定所下载的文件的目录
fp.set_preference("browser.helperApps.neverAsk.saveToDisk","application/octet-stream")#下载文件的类型
driver=webdriver.Firefox(firefox_profile=fp)
driver.get("http://pypi.Python.org/pypi/selenium")
driver.find_element_by_partial_link_text("selenium-2").click()

16. 操作 Cookie

WebDriver操作cookie的方法:
get_cookies(): 获取所有的cookie信息
get_cookie(name): 返回字典的key为“name”的cookie信息
add_cookie(cookie_dict):添加cookiecookie_dict为字典对象,必须有namevaluedelete_cookie(name,optionsString):删除cookie信息
delete_all_cookies():删除所有的cookie信息

17. 调用 JavaScipt

调整浏览器滚动条位置
window.scrollTo(左边距,上边距)

18. 处理 HTML5 的视频播放

load(),play(), pause()   加载,播放,暂停

19. 窗口截图

driver.get_screenshot_as_file("D:\\xxxxx")#截取当前窗口,并指定截图图片的保存位置

20. 关闭窗口

quit():退出相关程序和关闭所有窗口;
close():关闭当前窗口

21. 验证码的处理

①去掉验证码
②设置万能验证码
③验证码识别技术
④记录cookie

Selenium WebDriver API 学习笔记(二):浏览器控制

Selenium WebDriver API 学习笔记(二):浏览器控制

读了虫师《Selenium 2自动化测试实战 基于Python语言》一书,感触颇深,内容非常丰富。现整理下来,供后续学习参考使用。本次主要整理的是浏览器控制操作之一。 1.控制浏览器窗口大小

set_window_size(); 
如set_window_size(640,480); 即宽640,高480

maximize_window(); 窗口最大化,不需要参数,直接使用

2.控制浏览器进退、前进

back(); 返回
forwar(); 前进
如 driver.back(); 其中driver=webdriver.Chrome()

3.模拟浏览器刷新

refresh(); 如driver.refresh()类似F5

4.简单元素操作

①clear(); 清除文本
②send_keys(*value); 模拟按键输入
③click(); 单击元素
举例:
driver.find_element_by_id("qwe").clear()
driver.find_element_by_id("qwe").send_keys("tyyu")
driver.find_element_by_id("login").click()

5.webelement接口常用方法

size:返回元素的尺寸
text:获取元素的文本
get_attributte(name):获得属性
is_displayed():设置改元素是否用户可见

举例:
size=driver.find_element_by_id("qwe").size    获取输入框的尺寸
text=driver.find_element_by_id("qwe").text    获取文本信息
attributte = driver.find_element_by_id("qwe").get_ attributte(''type'')  可以是id、name、type或其他任意属性
result= driver.find_element_by_id("qwe"). is_displayed()  返回元素的结果是否可见,返回结果为Ture或者False

6.鼠标事件

perform(): 执行所有ActionChains中存储的行为
context_click(): 右击
double_click(): 双击
drag_and_drop(element, target
move_to_element(): 鼠标悬停

举例:
①rom selenium.webdriver.common.action_chains import ActionChains   先引入ActionChains类
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
#...
#定位到要右击的元素
right_click = driver.find_element_by_id("qwe")
#对定位到的元素执行鼠标右击操作
ActionChains(driver).context_click(right_click).perform()
说明:
ActionChains(driver):调用这个类,将浏览器驱动driver作为参数传入
context_click(right_click):模拟邮件操作,在使用时需要指定元素定位
perfom():将指定所有ActionChains中存储的行为。
②above=driver.find_element_by_id("qwer")
ActionChains(driver).move_to_element(above).perfom()
其他方法类似

7.键盘事件

Keys类提供了键盘上所有的按键方法
from selenium.webdriver.common.keys import Keys
send_keys(Keys.BACK_SPACE)        删除键
send_keys(Keys. SPACE)				空格键
send_keys(Keys.TAB)				制表键
send_keys(Keys.ESCAPE)				回退键
send_keys(Keys.ENTER)				回车键
send_keys(Keys.CONTROL,''a'')			全选
send_keys(Keys.CONTROL,''c'')		复制
send_keys(Keys.CONTROL,''x'')			剪贴
send_keys(Keys.CONTROL,''v'')			粘贴
send_keys(Keys.F1)
...
send_keys(Keys.F12)				F1-F12

8.获得验证信息

title, URL, text
举例:
now_url=driver.current_url 获取当前页面URL
title=driver.title 获取当前页面title
text前边已经提及到,不赘述

Selenium Webdriver cookie /使用Web浏览器已经打开

我有两个问题:

>我已经构建了一个正常运行的selenium webdriver脚本,但他打开了一个新的Firefox实例.是否可以使用已经打开的Firefox?如果是的话,怎么样?
>我需要向网站发送信息,以保持我的会话活跃.我想使用cookie并每10分钟发送一次请求.我不知道这是不是一个好主意…(我不能使用selenium authentification,因为该网站会生成一个包含银行网站数字的表格)

如果有人能给我一些支持……

解决方法

如果您正在使用Seleium2 / WebDriver,那么您可以通过调用新的FirefoxDriver()来创建启动浏览器实例,然后可以在多个测试中重复使用它.例如,如果您使用的是JUNIT,则可以在@BeforeClass中创建FirefoxDriver驱动程序并在@AfterClass中退出.

browserSessionReuse

以下SO帖子将解释为什么会议可能会到期.它可能还取决于您编写测试用例的方式(可能是您在setUp()方法中初始化它).
Selenium in -browserSessionReuse mode launchs a new browser

注意:通过每次测试创建和关闭浏览器实例来隔离测试总是更好.

我们今天的关于停止从Selenium Webdriver加载浏览器selenium停止网页加载的分享就到这里,谢谢您的阅读,如果想了解更多关于JavaSelenium Webdriver:修改navigator.webdriver标志以防止selenium检测、Selenium WebDriver API 学习笔记(三):浏览器控制、Selenium WebDriver API 学习笔记(二):浏览器控制、Selenium Webdriver cookie /使用Web浏览器已经打开的相关信息,可以在本站进行搜索。

本文标签: