Selenium使用总结(Java版本)

前端之家收集整理的这篇文章主要介绍了Selenium使用总结(Java版本)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

硒在最近的发展中被广泛应用,因为它以前没有被使用过,并且已经走了太多的坑。这是一张唱片。

配置要点:

1.Web驱动程序应该与浏览器版本相对应,chrome使用chrome驱动程序和chrome浏览器,Firefox使用geckodrive和Firefox浏览器

2.支持headless:本地开发使用mac环境,默认支持;linux需要安装xvf8(虚拟GUI)

3.maven项目构建,使用selenium-3.9.1或者最新版本

4.linux配置参考:chrome: ; firefox:

chrome启动参数参考:

1.系统环境变量配置:webdriver.chrome.driver=DRIVER_PATH

2.常用options配置:

3.webdriver实例化:

1.系统环境变量配置:webdriver.gecko.driver=DRIVER_PATH

2.常用options配置:

preference配置:

3.webdriver实例化:

System.setProperty("webdriver.gecko.driver",env.getProperty("path.gecko.driver" WebDriver webDriver = FirefoxOptions options = options.addArguments("--headless"); FirefoxProfile profile = profile.addExtensions( File(env.getProperty("path.chrome.proxy")));增加代理扩展 profile.setPreference("permissions.default.image",2);不显示图片 webDriver = } } 关闭webDriver (webDriver != }
WebDriverWait wait = WebDriverWait(webDriver,60); wait.until(ExpectedConditions.presenceOfElementLocated(By.id("xx"))); WebElement frame = wait.until((ExpectedCondition) driver ->= driver.findElement(By.id("iframepage"
String page = driver.getPageSource(); String url = driver.getCurrentUrl(); WebElement element = driver.findElement(By.id("xx")); element.sendKeys("test"); element.click(); element.sendKeys(Keys.BACK_SPACE);

1.窗口操作

String handle = driver.getWindowHandle(); Set handles = driver.getWindowHandles(); (! driver.switchTo().window(h); } }

2.表单操作,frame切换需要从外向内一层一层获取,可根据pageSource处理

3.弹窗操作

 

String proxyServer = "1.2.3.4:666" Proxy proxy = options.setProxy(proxy);

使用browsermobproxy做代理(或其他代理)

BrowserMobProxyServer bmpServer = bmpServer.setChainedProxy( InetSocketAddress("proxy.com",222)); bmpServer.chainedProxyAuthorization("user","pwd",AuthType.BASIC); bmpServer.setTrustAllServers(); bmpServer.start(11112); String proxyServer = "localhost:11112" Proxy proxy = options.setProxy(proxy);

本地代理可单独做分布式部署,多节点,使用zk管理

1.chrome扩展:无法在headless模式下使用加载扩展,尚未解决

chromeOptions.addExtensions( File(env.getProperty("path.chrome.proxy")));

chromium虽然是多进程执行,但是js引擎是单线程,同时打开多个窗口,只会加载一个页面,直到加载结束或打开下一个窗口才会去加载下一个页面,参考(

firefox可以同时加载多个窗口的页面,同时会默认屏蔽一些请求

屏蔽某些网页加载(设置header同理)

1.通过代理设置,browsermobserver

BrowserMobProxy server = server.blacklistRequests("http://.*\\.blacklist.com/.*",200); server.setBlacklist();

2.通过拓展设置,暂时没整透

1.采用正确连接方式

使用grid启动多个节点

注意:单节点使用多线程时,最好使用geckodriver,chromium的js引擎是单线程执行的

猜你在找的Java相关文章