赞
踩
pom文件引入依赖
- <dependency>
- <groupId>org.seleniumhq.selenium</groupId>
- <artifactId>selenium-server</artifactId>
- <version>3.0.1</version>
- </dependency>
核心代码示例
- import org.openqa.selenium.*;
- import org.openqa.selenium.chrome.ChromeDriver;
- import org.openqa.selenium.chrome.ChromeOptions;
-
- import java.util.List;
-
-
- public class JueJinSignIn {
-
- private static String webDriver = "webdriver.chrome.driver";
- private static String webDriverPath ="E:\\work_space\\reptile\\src\\main\\resources\\chromedriver\\chromedriver.exe";
- private static WebDriver driver = null;
-
- public static void main(String[] args) throws InterruptedException {
- System.setProperty(webDriver, webDriverPath);
- // ChromeOptions
- ChromeOptions chromeOptions = new ChromeOptions();
- // 设置后台静默模式启动浏览器
- // chromeOptions.addArguments("--headless");
- //添加用户cookies数据
- chromeOptions.addArguments("--user-data-dir=C:\\Users\\liuya\\AppData\\Local\\Google\\Chrome\\User Data1");
- //启动浏览器
- driver = new ChromeDriver(chromeOptions);
- while (true){
- start();
- }
- }
-
- public static void start() throws InterruptedException {
- driver.get("https://juejin.cn/");
- Thread.sleep(500);
- WebElement signedin = driver.findElement(By.xpath("//button[@class='btn signedin-btn']"));
- signedin.sendKeys(Keys.ENTER);
- Thread.sleep(500);
- WebElement signed = driver.findElement(By.xpath("//button[@class='signedin btn']"));
- signed.sendKeys(Keys.ENTER);
- Thread.sleep(500);
- WebElement btn = driver.findElement(By.xpath("//div[@class='btn-area']/button[@class='btn']"));
- btn.sendKeys(Keys.ENTER);
- Thread.sleep(500);
- WebElement LuckyDrawBtn = driver.findElement(By.id("turntable-item-0"));
- JavascriptExecutor jse = (JavascriptExecutor)driver;
- jse.executeScript("arguments[0].scrollIntoView(true);", LuckyDrawBtn);
- LuckyDrawBtn.click();
- Thread.sleep(500);
- System.out.println(driver.getPageSource());
- List<WebElement> elements = (List<WebElement>) jse.executeScript("return jQuery.find('.lottery_modal byte-modal lottery_modal_lucky v-transfer-dom')");
- WebElement reward= elements.get(0).findElement(By.xpath("//div[@class='wrapper']/button[@class='submit']"));
- reward.sendKeys(Keys.ENTER);
- //等待24小时
- Thread.sleep(24*60*60*1000);
- }
-
- }
org.seleniumhq.selenium 是 Selenium 的 Java 客户端库,用于自动化测试 Web 应用程序。Selenium 是一套用于浏览器自动化的工具集,能够模拟用户在网页上的操作,进行功能测试和界面测试等。通过 org.seleniumhq.selenium 库,开发者可以编写自动化测试脚本来验证 Web 应用程序的正确性和可靠性。下面对 org.seleniumhq.selenium 的主要功能进行详细解释。
WebDriver 接口 WebDriver 接口定义了用于控制浏览器的方法,包括打开、关闭浏览器窗口,导航到指定的 URL,查找元素,执行 JavaScript 等。WebDriver 是执行测试脚本的核心,它提供了与各种浏览器的通信接口,使得开发者能够在不同的浏览器上执行自动化测试。
WebElement 接口 WebElement 接口表示一个网页中的元素,可以是输入框、按钮、链接、下拉列表等。通过 WebElement 接口,可以获取元素的属性、文本内容,进行点击、输入文本、选择选项等操作。可以使用 WebDriver 的 findElement 方法或 findElements 方法来定位元素。
By 类 By 类提供了一系列静态方法,用于定位元素的方式。可以根据元素的 ID、类名、标签名、CSS 选择器、XPath 表达式等方式来定位元素。By 类的方法可以与 WebDriver 的 findElement 方法或 findElements 方法一起使用,用于定位网页中的元素。
Actions 类 Actions 类提供了一系列操作方法,用于在浏览器上执行复杂的用户交互操作,如鼠标移动、键盘操作、拖拽等。通过 Actions 类,可以模拟用户在浏览器上的操作,进行更精细和复杂的自动化测试。
ExpectedConditions 类 ExpectedConditions 类提供了一系列预定义的条件,用于等待某个特定的条件发生。可以用于等待页面加载完成、元素可见、元素可点击等情况。通过 ExpectedConditions 类,可以实现更精确的等待和判断,保证测试脚本在合适的时机继续执行。
WebDriverOptions 接口 WebDriverOptions 接口提供了一系列方法,用于配置和管理 WebDriver 的选项。可以设置超时时间、窗口大小、浏览器的缓存行为等。通过 WebDriverOptions 接口,可以调整自动化测试的环境和设置,以满足不同的需求。
WebDriverEventListener 接口 WebDriverEventListener 接口是一个事件监听器接口,用于监听 WebDriver 的事件,如元素被点击、页面导航等。通过实现该接口,可以在自动化测试过程中捕获和处理各种事件,实现更灵活和定制化的测试流程。
浏览器驱动 org.seleniumhq.selenium 提供了多个浏览器驱动,如 ChromeDriver、FirefoxDriver、EdgeDriver 等,用于与不同浏览器进行通信。开发者可以根据需要选择适合的浏览器驱动,并下载相应的驱动程序,以便与浏览器进行交互。
总结: org.seleniumhq.selenium 是 Selenium 的 Java 客户端库,用于自动化测试 Web 应用程序。通过 WebDriver 接口、WebElement 接口、By 类、Actions 类、ExpectedConditions 类、WebDriverOptions 接口、WebDriverEventListener 接口等,org.seleniumhq.selenium 提供了丰富的功能和灵活的 API,使得开发者能够编写自动化测试脚本,对 Web 应用程序进行功能测试和界面测试。使用 org.seleniumhq.selenium,可以模拟用户在浏览器上的操作,验证页面的正确性和可靠性。同时,Selenium 还提供了多个浏览器驱动,使得开发者能够与各种常见的浏览器进行通信和测试。总体而言,org.seleniumhq.selenium 是一个强大而广泛应用的自动化测试工具,为开发者提供了方便、可靠的方式来进行 Web 应用程序的自动化测试。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。