首页 > 编程语言 >Selenium安装及配置和Python/Java案例

Selenium安装及配置和Python/Java案例

时间:2025-01-10 11:57:29浏览次数:3  
标签:webdriver 浏览器 Python driver Selenium Java com id selenium

什么是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.jar

2)、使用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

相关文章

  • JavaScript 中函数的 this 问题
    在JavaScript中,this关键字的值是由函数调用的上下文决定的。this的值在不同的场景中会有所不同,理解这些场景非常重要。1.全局上下文中的this在全局执行环境中(非严格模式),this指向全局对象(在浏览器中是window,在Node.js中是global)。在严格模式下,this会是undefined......
  • Java 实战订单超时自动取消设计方案
    前言在电商、外卖、票务等系统中,订单超时未支付自动取消是一个常见的需求。这个功能乍一看很简单,甚至很多初学者会觉得:"不就是加个定时器么?"但真到了实际工作中,细节的复杂程度往往会超乎预期。这里我们从基础到高级,逐步分析各种实现方案,最后分享一些在生产中常见的优化技......
  • Python网络爬虫:从入门到实战
            Python以其简洁易用和强大的库支持成为网络爬虫开发的首选语言。本文将系统介绍Python网络爬虫的开发方法,包括基础知识、常用工具以及实战案例,帮助读者从入门到精通。什么是网络爬虫?网络爬虫(WebCrawler)是一种自动化程序,用于抓取网页内容。爬虫通过模拟浏览......
  • python激活venv做了什么
    当激活Python的虚拟环境(venv)时,激活脚本会对系统环境进行一系列临时修改,让终端的Python和相关工具使用虚拟环境中的版本和依赖。这些操作不会永久改变系统环境,只在当前终端会话中生效。激活虚拟环境的操作详解1.修改PATH环境变量激活脚本会将虚拟环境的bin(Linux/MacOS......
  • python画大的pass与fail logo(带颜色)
    print("\033[32m"+4*""+9*"x"+10*""+1*"x"+11*""+7*"x"+5*""+7*"x"+4*""+"\033[0m")print("\033[32m"+4*""+2*"x"......
  • 医学图像分析工具06:MNE-Python || EEG/MEG数据分析
    MNE-Python是一款专为处理和分析脑电图(EEG)、脑磁图(MEG)以及功能性磁共振成像(fMRI)数据而设计的开源Python库。得益于Python的灵活性和可扩展性,MNE-Python不仅可以满足基础分析的需求,还能通过其强大的社区生态实现高度定制化。在本教程中,我们将深入探讨MNE-Python的功......
  • 基于JAVA中的spring框架和jsp实现门禁管理系统项目【内附项目源码+论文说明】
    摘要门禁管理系统主要用在了企业中,职工可以通过门禁进行通道的访问和通过,管理员可以对企业员工进行门禁的限制,通道可以限定通过的时间和日期,也能对某个特种用户进行限制通行,所以基与互联网的门禁管理系统也就孕育而生了。门禁管理系统就是能够使学生通过互联网完成毕业设计......
  • JAVA开源免费项目 基于Vue和SpringBoot的常规应急物资管理系统(附源码)
    本文项目编号T159,文末自助获取源码\color{red}{T159,文末自助获取源码}......
  • JAVA开源免费项目 基于Vue和SpringBoot的线上辅导班系统(附源码)
    本文项目编号T160,文末自助获取源码\color{red}{T160,文末自助获取源码}......
  • 【openAI库】Python语言openAI库详解:从入门到精通(从0到1手把手教程)
    在人工智能(AI)领域,OpenAI无疑是全球最受瞩目的机构之一。它推出的GPT系列模型、DALL·E等创新技术,正在深刻改变各行各业。作为Python开发者,我们该如何快速上手并高效利用OpenAI的API,成为了提升个人竞争力的关键。本文将带你从零开始,深入解析Python语言中的openAI库,助你掌握AI开发......