当前位置: 首页 > news >正文

制作网站生成器网站怎样优化文章关键词

制作网站生成器,网站怎样优化文章关键词,个人域名备案风险,网代公司这里写自定义目录标题 Selenium WebDriver简介一、安装部署二、Java项目中使用1.引入依赖2.示例代码 三、WebDriver使用说明1.WebDriver定位器2.常用操作3.使用 cookie4.键盘与鼠标操作 Selenium WebDriver简介 Selenium WebDriver 是一种用于自动化测试 Web 应用程序的工具。…

这里写自定义目录标题

  • Selenium WebDriver简介
  • 一、安装部署
  • 二、Java项目中使用
    • 1.引入依赖
    • 2.示例代码
  • 三、WebDriver使用说明
    • 1.WebDriver定位器
    • 2.常用操作
    • 3.使用 cookie
    • 4.键盘与鼠标操作

Selenium WebDriver简介

Selenium WebDriver 是一种用于自动化测试 Web 应用程序的工具。它提供了一种编程接口,允许开发人员编写代码以控制浏览器的行为和交互。这个工具在 Web 开发和测试中非常流行,因为它支持多种浏览器并且可以在不同的操作系统上运行。Selenium WebDriver 允许开发人员模拟用户在浏览器中的操作,例如点击按钮、填写表单和导航页面。

一、安装部署

本文使用docker方式进行安装

docker run -d -p 5555:4444 -p 7900:7900 -p 5900:5900 --shm-size="2g" selenium/standalone-chrome

端口讲解:

  • 4444 WebDriver服务地址地址
  • 7900 noVNC端口,noVNC是一种基于Web的VNC客户端
  • 5900 允许通过 VNC 客户端连接到容器内的图形界面

如果遇到拉取问题自行百度docker最新镜像源然后配置 /etc/docker/daemon.json文件即可。


安装运行后
访问http://<ip地址>:5555/就可以看到如下页面
在这里插入图片描述
sessions:代表创建了几个会话。
max.concurrentcy: 代表 你这个容器同时可以处理几个对话。
图中这种情况只能 同时模拟一个网页,也就是同时只能处理一个会话。

访问noVNC
http://<ip地址>:7900/?autoconnect=1&resize=scale&password=secret
在这里插入图片描述
客户端连接可以下载VNC Viewer
在这里插入图片描述

二、Java项目中使用

1.引入依赖

<dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-java</artifactId><version>3.141.59</version></dependency><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>23.0</version></dependency><dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.2</version></dependency>

2.示例代码

以下代码实现了默认人使用google浏览器打开百度,在搜索框中输入了csdn 落魄实习生,点击了搜索按钮获取页面中所有文章标题及链接

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.openqa.selenium.support.ui.WebDriverWait;import java.net.URL;
import java.util.List;
import java.util.concurrent.TimeUnit;import static org.openqa.selenium.support.ui.ExpectedConditions.numberOfWindowsToBe;
import static org.openqa.selenium.support.ui.ExpectedConditions.titleIs;public class MainClass {public static void main(String[] args) {WebDriver driver = null;try {//打开一个浏览器窗口//加载 chromedriver 驱动driver = new RemoteWebDriver(new URL("http://你的IP:5555/wd/hub"), DesiredCapabilities.chrome());//打开百度链接driver.navigate().to("http://www.baidu.com/");//在搜索文本框输入"csdn 落魄实习生"driver.findElement(By.id("kw")).sendKeys("csdn 落魄实习生");//点击搜索按钮driver.findElement(By.id("su")).click();//存储当前原始窗口或页签的IDString originalWindow = driver.getWindowHandle();//获取当前打开的窗口或页签数int windosSize = driver.getWindowHandles().size();//等到百度搜索结果页面元素加载完(这里最多等5秒)driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);//点击第一条搜索结果,会打开新页签,也就是第2个页签driver.findElement(By.xpath("//*[@id='content_left']/div[@id='1']/div[@class='c-container']/div/h3/a")).click();WebDriverWait wait = new WebDriverWait(driver, 10);//这里不我建议用,因为我打开第二窗口打不开,可能是因为分配的资源大小的问题。我实际处理业务都是 单窗口操作的,先把第二个网页的链接保存到数据库//等待第2个新窗口或新页签打开wait.until(numberOfWindowsToBe(2));//循环指导找到新窗口或页签的句柄for (String windowHandle : driver.getWindowHandles()) {if (!originalWindow.contentEquals(windowHandle)) {//driver切换为新窗口或新页签的driver.switchTo().window(windowHandle);break;}}//等待新窗口或新页签的内容加载wait.until(titleIs("落魄实习生-CSDN博客"));//读取当前页面标题System.out.println("当前网址的标题:" + driver.getTitle());//从地址栏中读取当前 URLSystem.out.println("当前网址的链接:" + driver.getCurrentUrl());//获取文章标题和链接List<WebElement> articleTitles = driver.findElements(By.xpath("//div[@class='article-item-box csdn-tracking-statistics']/h4/a"));for (WebElement articleTitle : articleTitles) {//获取 h4 标签中的显示文本String text = articleTitle.getText();//获取 a 标签里的 href 属性的值String link = articleTitle.getAttribute("href");System.out.println("文章标题:" + text + " 链接:" + link);}} catch (Exception e) {e.printStackTrace();} finally {driver.quit();}}
}

执行结果如下:
在这里插入图片描述

三、WebDriver使用说明

1.WebDriver定位器

WebDriver定位方法提供了八种元素定位方法,所对应的方法、特性分别是:

定位器描述
class name根据class 的值来搜索匹配元素
css selector根据 css 的值来搜索匹配元素
id根据 id 属性的值来搜索匹配元素
name根据 name 属性的值来搜索匹配元素
link text根据链接显示的全部文本搜索匹配元素
partial link text根据链接显示的部分文本搜索匹配元素
tag name根据html标签名搜索匹配元素
xpath根据元素的层级位置搜索匹配元素

(1) class name 定位器
HTML 页面 Web 元素可以具有class属性,我们可以使用 Selenium 中可用的类名定位器来识别这些元素。

WebDriver driver = new ChromeDriver();
driver.findElement(By.className("information"));

(2) css selector 定位器
CSS 是用于设置 HTML 页面样式的语言。我们可以使用 css 选择器定位器策略来识别页面上的元素。如果元素有一个 id,我们创建定位器为 css = #id。否则我们遵循的格式是 css =[attribute=value] 。下面使用 css 为名字文本框创建定位器。

WebDriver driver = new ChromeDriver();
driver.findElement(By.cssSelector("#fname"));

(3) id 定位器
我们可以使用网页中元素可用的 ID 属性来定位它。通常,ID 属性对于网页上的元素应该是唯一的。

WebDriver driver = new ChromeDriver();
driver.findElement(By.id("lname"));

(4) name 定位器
我们可以使用网页中元素可用的 NAME 属性来定位它。通常 NAME 属性对于网页上的元素应该是唯一的。

WebDriver driver = new ChromeDriver();
driver.findElement(By.name("newsletter"));

(5) link text 定位器
如果我们要定位的元素是一个链接,我们可以使用链接文本定位器在网页上识别它。链接文本是链接显示的文本。

WebDriver driver = new ChromeDriver();
driver.findElement(By.linkText("Selenium Official Page"));

(6) partial link text 定位器
如果我们要定位的元素是一个链接,我们可以使用部分链接文本定位器在网页上识别它。链接文本是链接显示的文本。我们可以将部分文本作为值传递。

WebDriver driver = new ChromeDriver();
driver.findElement(By.partialLinkText("Official Page"));

(7) tag 定位器
我们可以使用 HTML TAG 本身作为定位器来识别页面上的 Web 元素。使用tag 定位器来定位“a”标签。

WebDriver driver = new ChromeDriver();
driver.findElement(By.tagName("a"));

(8) xpath 定位器
一个HTML文档可以看作是一个XML文档,然后我们就可以使用xpath来遍历到达感兴趣元素的路径来定位元素。XPath 可以是绝对 xpath,它是从文档的根目录创建的。示例 - /html/form/input[1]。这将返回男性单​​选按钮。或者 xpath 可能是相对的。示例: //输入[@name=‘fname’]。这将返回名字文本框。让我们使用 xpath 为女性单选按钮创建定位器。

WebDriver driver = new ChromeDriver();
driver.findElement(By.xpath("//input[@value='f']"));

关于 xpath 定位器你可以参考文章:
Selenium 中的 XPath
selenium 定位元素
XPath in Selenium: How to Find & Write
How to use XPath in Selenium

2.常用操作

1.打开一个新的浏览器页签

//打开一个新的浏览器页签
driver.switchTo().newWindow(WindowType.TAB);

2.打开网址链接

//方便的方式
driver.get("http://www.baidu.com");
//或者下面的方式,是一样的效果
driver.navigate().to("http://www.baidu.com");

3.获取当前网页的标题和链接

//读取当前页面标题
driver.getTitle();
//从地址栏中读取当前 URL
driver.getCurrentUrl();

4.浏览器前进、后退、刷新、关闭

//浏览器的后退
driver.navigate().back();
//浏览器的前进
driver.navigate().forward();
//浏览器的刷新
driver.navigate().refresh();
//关闭浏览器
driver.quit();

5.弹窗的警告、确认
(1)获取警告弹窗的文本并点击确认

//使用link text定位器找到页面链接,并点击它来出发弹窗 
driver.findElement(By.linkText("See an example alert")).click();
//等弹窗显示并获取弹窗对象
Alert alert = wait.until(ExpectedConditions.alertIsPresent());
//获取弹窗的文本内容
String text = alert.getText();
//点击弹窗的确认按钮
alert.accept();

(2)确认弹窗类似于警告弹窗,除了用户还可以选择取消消息。
此示例还展示了另一种获取弹窗对象的方法:

//使用link text定位器找到链接,并点击它来出发弹窗 
driver.findElement(By.linkText("See a sample confirm")).click();
//等弹窗显示
wait.until(ExpectedConditions.alertIsPresent());
//获取弹窗对象
Alert alert = driver.switchTo().alert();
//获取弹窗的文本内容
String text = alert.getText();
//点击弹窗的取消按钮
alert.dismiss();

(3)可输入的弹窗
提示类似于确认弹窗,可输入的弹窗还可以输入一些文本信息,与使用表单元素类似。

//使用link text定位器找到链接,并点击它来出发弹窗 
driver.findElement(By.linkText("See a sample prompt")).click();
//等弹窗显示并获取弹窗对象
Alert alert = wait.until(ExpectedConditions.alertIsPresent());
//在弹窗的输入框输入“你好啊”
alert.sendKeys("你好啊");
//按确定按钮
alert.accept();

6.判断页面的元素是否存在

int headImage = driver.findElements(By.xpath("//*[@class='user_avatar']")).size();
if (headImage == 0) {System.out.println("页面上 class 为 user_avatar 的 html 元素不存在");
}

3.使用 cookie

1.添加cookie

public static void main(String[] args) {WebDriver driver = new ChromeDriver();try {//打开网址driver.get("http://www.example.com");//添加cookie到当前浏览器网址的上下文中driver.manage().addCookie(new Cookie("key", "value"));} finally {//关闭浏览器driver.quit();}
}

2.获取与删除 Cookie
(1)获取指定 Cookie

public static void main(String[] args) {WebDriver driver = new ChromeDriver();try {driver.get("http://www.example.com");//设置一个Cookiedriver.manage().addCookie(new Cookie("login", "fgflkshf&"));// 获取key是 'login'的CookieCookie cookie1 = driver.manage().getCookieNamed("login");System.out.println(cookie1);} finally {driver.quit();}
}

(2)获取所有 Cookie

Set<Cookie> cookies = driver.manage().getCookies();

(3)删除指定 Cookie

driver.manage().deleteCookieNamed("login");

(4)删除所有 Cookie

driver.manage().deleteAllCookies();

4.键盘与鼠标操作

键盘与鼠标操作可参考官网说明:

1.键盘操作说明

2.鼠标操作说明

3.滚轮操作说明


本文借鉴于:https://blog.csdn.net/qq_33697094/article/details/131292916

http://www.hkea.cn/news/400279/

相关文章:

  • 网站建设的一些问题友链交易交易平台
  • 创业初期要建立公司的网站吗seo排名优化代理
  • 做网站全屏尺寸是多少钱站长工具查询系统
  • 做企业平台的网站有哪些手机网站制作教程
  • 免费行情的软件大全下载北京公司排名seo
  • 网站联系方式要素qq群推广链接
  • div css 网站模板免费的云服务器有哪些
  • 35互联做网站好吗网店运营工作内容
  • 网站建设模拟软件营销培训课程内容
  • 深圳建网站兴田德润专业2023年最新新闻简短摘抄
  • 学校网站怎么查询录取百度相册登录入口
  • 自助建设彩票网站网址查询工具
  • 怎么创建网页的快捷方式seo入门版
  • 互联网企业网站网络优化
  • 山东手工活外发加工网四川二级站seo整站优化排名
  • 行业门户网站开发百度竞价怎么做效果好
  • 适合前端做项目的网站百度网盘搜索
  • 下载网站怎么下载广州网站定制多少钱
  • 西安攻略旅游自由行怎么玩北京seo软件
  • 汉川网站建设sem代运营
  • 装酷网装修平台东莞seo外包
  • 专门做图片的网站吗如何建网站要什么条件
  • 卢氏县住房和城乡建设局网站站长统计 站长统计
  • 济南 网站制作旺道营销软件
  • 新上线网站如何做搜索引擎站长素材网站
  • 做网站编辑深圳疫情防控最新消息
  • PHP网站开发项目式教程google下载手机版
  • 国外专门用于做网站图片的做网站要多少钱
  • 网站维护费用计入什么科目媒介星软文平台官网
  • 网站建设seo 视频做网站哪个平台好