什么是Selenium?
Selenium 起源 2004年,是一个开源、免费、简单、灵活,对Web浏览器支持良好的自动化测试工具,在UI自动化、爬虫等场景下是十分实用的。
Selenium的用途
*Selenium* 有很多功能, 但其核心是 Web 浏览器自动化的一个工具集, 它使用最好的技术来远程控制浏览器实例, 并模拟用户与浏览器的交互。
它允许用户模拟终端用户执行的常见活动;将文本输入到字段中,选择下拉值和复选框,并单击文档中的链接。它还提供许多其他控件,比如鼠标移动、任意 JavaScript 执行等等。
(1)Selenium可以驱动浏览器自动执行自定义好的逻辑代码,也就是可以通过代码完全模拟成人类使用浏览器自动访问目标站点并操作,那我们也可以拿它来做爬虫。
(2)Selenium本质上是通过驱动浏览器,完全模拟浏览器的操作,比如跳转、输入、点击、下拉等...进而拿到网页渲染之后的结果,可支持多种浏览器
Python环境应用
1、下载Selenium模块
#python应用selenium 比较简单,只需要通过pip安装即可
pip install selenium
2、浏览器驱动下载
Selenium应用依赖浏览器驱动,主流浏览器驱动下载地址如下:
Google浏览器驱动:https://sites.google.com/a/chromium.org/chromedriver/downloads
国内可用以下地址114以及之前谷歌浏览器驱动版本网址:
http://chromedriver.storage.googleapis.com/index.html
https://registry.npmmirror.com/binary.html?path=chromedriver/
126之后谷歌浏览器驱动版本网址:
https://googlechromelabs.github.io/chrome-for-testing/
Firefox浏览器驱动:https://github.com/mozilla/geckodriver/releases
IE浏览器驱动:http://selenium-release.storage.googleapis.com/index.html
Edge浏览器驱动:https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
3、配置驱动环境
Selenium应用依赖浏览器驱动,配置方式:
1)、将驱动目录配置到环境变量,代码实例无需再指定。
from selenium
import webdriver
webdriver browser = webdriver.Chrome()
2)、Python代码中指定驱动路径(不配置PATH环境变量):
from selenium
import webdriver
#Windows配置
browser = webdriver.Chrome(executable_path="D:\dev\drivers\chromedriver.exe",options=options)
#Mac配置
#browser = webdriver.Chrome(executable_path="/Users/fuqying/fuqy/dev/chromedriver/chromedriver",options=options)
4、Selenium示例
创建一个Python脚 本,用Selenium WebDriver提供的类和方法模拟用户与 浏览器的交互。
一个简单的登录示例:华为云IAM用户登录模拟,
from selenium
import webdriver
import time
# 实例化
webdriver browser = webdriver.Chrome()
# 最大浏览器尺寸
browser.maximize_window()
# 打开浏览器,访问华为云地址
browser.get(url="https://auth.huaweicloud.com/authui/login.html#/login")
login_btn = browser.find_element_by_id("IAMLinkDiv")
login_btn.click()
acc_id_ele = browser.find_element_by_id('IAMAccountInputId')
user_ele = browser.find_element_by_id('IAMUsernameInputId')
pass_ele = browser.find_element_by_id('IAMPasswordInputId')
acc_id_ele.send_keys("hwc-ktc-cim")
user_ele.send_keys("username")
pass_ele.send_keys("password")
login_btn = browser.find_element_by_id("loginBtn")
login_btn.click()
time.sleep(10)
browser.quit()
打开百度,并搜索selenium:
from selenium
import webdriver # 导入webdriver
import time
driver = webdriver.Chrome() # 获取浏览器驱动
driver.get(" http://www.baidu.com") # 打开百度首页
input_box = driver.find_element_by_id('kw') # 获取首页输入框元素
input_box.send_keys('selenium') # 向输入框中输入内容
search_button = driver.find_element_by_id('su') # 获取首页搜索按钮元素
search_button.click() # 点击搜索按钮
time.sleep(5)
driver.quit() # 关闭驱动
Java环境应用
1. 下载Selenium模块
Java使用Selenium需要先引入包,两种方式:
1)、通过官网下载依赖包,地址:https://www.selenium.dev/downloads/
|____selenium-java-xxx-srcs.jar
|____selenium-java-xxx.jar
|____selenium-server-standalone-xxx.jar2)、使用Maven项目,pom.xml加入selenium依赖
Maven
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.27.0</version>
</dependency>
2、浏览器驱动下载
Google浏览器驱动(墙外):
https://sites.google.com/a/chromium.org/chromedriver/downloads
Google浏览器驱动(墙内-114版本之前):
http://chromedriver.storage.googleapis.com/index.html
https://registry.npmmirror.com/binary.html?path=chromedriver/
Google浏览器驱动(墙内-126版本之后):
https://googlechromelabs.github.io/chrome-for-testing/
Firefox浏览器驱动:https://github.com/mozilla/geckodriver/releases
IE浏览器驱动:http://selenium-release.storage.googleapis.com/index.html
Edge浏览器驱动:https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
3、配置驱动环境
同Python环境,也分指定路径及环境变量配置
1)、将驱动目录配置到环境变量,代码实例无需再指定。
#代码中直接初始化实例
WebDriver driver = new ChromeDriver();
2)、代码中指定驱动路径(不配置PATH环境变量):
#Windows配置
System.setProperty("webdriver.chrome.driver", "D:\dev\drivers\chromedriver.exe");
#Mac配置
#System.setProperty("webdriver.chrome.driver", "/Users/fuqying/fuqy/dev/chromedriver/chromedriver");
#初始化WebDriver实例
WebDriver driver = new ChromeDriver();
4、Selenium示例
华为云IAM用户登录模拟
package com.fuqying;
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;
public class SeleniumDemo {
public static void main(String[] args) {
//配置驱动
System.setProperty("webdriver.chrome.driver", "/Users/fuqying/fuqy/dev/chromedriver/chromedriver");
WebDriver driver = new ChromeDriver(); //Chrome浏览器
//WebDriver driver = new FirefoxDriver(); //Firefox浏览器
//WebDriver driver = new EdgeDriver(); //Edge浏览器
//WebDriver driver = new InternetExplorerDriver(); // Internet Explorer浏览器
//WebDriver driver = new OperaDriver(); //Opera浏览器
//WebDriver driver = new PhantomJSDriver(); //PhantomJS
//打开华为云登录地址
driver.get("https://auth.huaweicloud.com/authui/login.html#/login");
JavascriptExecutor js = (JavascriptExecutor) driver;
//滚动到底部
js.executeScript("window.scrollTo(0, document.body.scrollHeight);");
//切换IAM用户登录
WebElement element = driver.findElement(By.id("IAMLinkDiv"));
element.click();
//获取IAM用户登录的元素
WebElement accountInputIdEle = driver.findElement(By.id("IAMAccountInputId"));
WebElement usernameInputIdEle = driver.findElement(By.id("IAMUsernameInputId"));
WebElement passwordInputIdEle = driver.findElement(By.id("IAMPasswordInputId"));
accountInputIdEle.sendKeys("hwc-demo-cim");
usernameInputIdEle.sendKeys("fuqying");
passwordInputIdEle.sendKeys("password");
//点击登录按钮
WebElement loginBtnEle = driver.findElement(By.id("loginBtn"));
loginBtnEle.click();
//关闭浏览器
//driver.quit();
}
}
51CTO博客免登录获取代码块内容
package com.fuqying;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import java.util.List;
public class SeleniumDemo {
public static void main(String[] args) {
//这里修改一下路径
System.setProperty("webdriver.chrome.driver", "/Users/fuqying/fuqy/dev/chromedriver/chromedriver");
WebDriver driver = new ChromeDriver();
// 打开51CTO的文章网页
driver.get("https://blog.51cto.com/u_16099245/13034796");
// 等待页面加载完成
try {
//等待5秒,可根据实际情况调整
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
List<WebElement> codeTexts = driver.findElements(By.xpath("//code[contains(@id, 'code_id_')]"));
for(WebElement codeText : codeTexts) {
System.out.println("================================================================================");
System.out.println(codeText.getDomAttribute("id"));
System.out.println("================================================================================");
String text = codeText.getText();
System.out.println(text);
}
// 关闭浏览器
driver.quit();
}
}
Selenium之免登录获取CSDN代码块内容(Java)-CSDN博客
标签:webdriver,浏览器,Python,driver,Selenium,Java,com,id,selenium From: https://blog.csdn.net/weixin_47470990/article/details/145014782