2024全国大学生软件测试大赛-校内练习题-京东、网易(功能)

1.京东

一个是eclipse上的代码,一个是idea上的代码,idea上用的junit5框架。 

import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Actions;

public class Example_jd {

	public static void test(WebDriver driver) throws InterruptedException {
		// TODO Test script
		// eg:driver.get("https://www.baidu.com/")
		// eg:driver.findElement(By.id("wd"));

		// 3.加载浏览器

		// 4.通过chromeDriver打开浏览器
		// chromeDriver.get("https://www.baidu.com/");
		driver.get("https://www.jd.com/");
		Thread.sleep(1500);

		driver.manage().window().maximize();
		Thread.sleep(1000);

		// 1. 打开京东官网首页,选择城市为台湾
		Actions actions = new Actions(driver);
		WebElement city = driver.findElement(By.id("ttbar-mycity"));
		actions.moveToElement(city).perform();
		Thread.sleep(1500);
		driver.findElement(By.linkText("台湾")).click();
		Thread.sleep(1000);

		// 2 .搜索框输入“家具”并搜索
		driver.findElement(By.id("key")).sendKeys("家具");
		Thread.sleep(1500);
		driver.findElement(By.xpath("//*[@id=\"search\"]/div/div[2]/button")).click();
		Thread.sleep(1500);
		//
		driver.findElement(By.id("loginname")).sendKeys("lcc聪聪", Keys.TAB, "lcc20040220");
		Thread.sleep(1000);
		driver.findElement(By.id("loginsubmit")).click();
		Thread.sleep(20000);
		//
		// driver.findElement(By.id("key")).sendKeys("家具");
		// driver.findElement(By.xpath("//*[@id=\"search\"]/div/div[2]/button")).click();
		// Thread.sleep(1500);

		// 3 .选择【源氏木语】

		driver.findElement(By.linkText("源氏木语")).click();
		Thread.sleep(1000);

		// 4 .选择【边桌/茶几】
		driver.findElement(By.linkText("边桌/茶几")).click();
		Thread.sleep(1000);

		// 5.选择【111-120cm】
		driver.findElement(By.linkText("111-120cm")).click();
		Thread.sleep(1000);

		// 6.选择【实木】
		driver.findElement(By.linkText("实木")).click();
		Thread.sleep(1000);

		// 7.选择【可储物】
		driver.findElement(By.linkText("可储物")).click();
		Thread.sleep(1000);

		// 8. 按顺序点击【新品】【综合】【销量】【评论数】

		driver.findElement(By.linkText("新品")).click();
		driver.navigate().refresh();
		Thread.sleep(1000);

		driver.findElement(By.linkText("综合")).click();
		driver.navigate().refresh();
		Thread.sleep(1000);

		driver.findElement(By.linkText("销量")).click();
		driver.navigate().refresh();
		Thread.sleep(1000);

		driver.findElement(By.linkText("评论数")).click();
		driver.navigate().refresh();
		Thread.sleep(1500);

		// 9. 选择第一条信息
		driver.findElement(By.xpath("//*[@id=\"warecard_10119671215230\"]")).click();
		Thread.sleep(1500);

		// 10.选择【茶几原木色1200*600*450mm】
		driver.switchTo().window(driver.getWindowHandles().toArray()[1].toString());
		driver.findElement(By.cssSelector("a[clstag='shangpin|keycount|product|yanse-1.2米茶几']")).click();
		Thread.sleep(1500);

		// JavascriptExecutor executor = (JavascriptExecutor) driver;
		// executor.executeScript("window.scrollTo(0, 400)");
		driver.findElement(By.xpath("//*[@id=\"detail\"]/div[1]/ul/li[2]")).click();
		Thread.sleep(1500);
		driver.findElement(By.xpath("//*[@id=\"detail\"]/div[1]/ul/li[5]")).click();
		Thread.sleep(1500);
		driver.findElement(By.xpath("//*[@id=\"detail\"]/div[1]/ul/li[6]")).click();
		Thread.sleep(1500);

		// 12.返回第一个窗口并选择【超市】
		driver.switchTo().window(driver.getWindowHandles().toArray()[0].toString());
		Thread.sleep(1500);
		driver.findElement(By.linkText("超市")).click();
		Thread.sleep(1500);

		// 13.返回上层窗口并关闭上层窗口
		driver.switchTo().window(driver.getWindowHandles().toArray()[2].toString());
		driver.close();
		Thread.sleep(1500);

		// 14.跳转至【超市】页面,关闭【超市】页面
		driver.switchTo().window(driver.getWindowHandles().toArray()[1].toString());
		driver.close();
		Thread.sleep(1500);

	}

	public static void main(String[] args) {
		// Run main function to test your script.
		System.setProperty("webdriver.chrome.driver", "C:\\google\\chrome-win64\\chrome-win64\\chromedriver.exe");
		WebDriver driver = new ChromeDriver();
		try {
			test(driver);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			driver.quit();
		}
	}

}
package test;

import org.apache.commons.io.FileUtils;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
import org.openqa.selenium.*;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

import java.io.File;
import java.io.IOException;
import java.util.Set;
import java.util.concurrent.TimeUnit;

public class test_jd {
    private WebDriver driver;
    @BeforeEach
    public void setUp(){
        System.setProperty("webdriver.chrome.driver", "C:\\google\\chrome-win64\\chrome-win64\\chromedriver.exe");

        ChromeOptions chromeOptions = new ChromeOptions();
        chromeOptions.addArguments("--remote-allow-origins=*");
        driver = new ChromeDriver(chromeOptions);

        driver.get("https://www.jd.com/");
        //  1. 打开网易首页,并最大化窗口
        driver.manage().window().maximize();
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        //设置隐式等待时间为 10 秒,即在一定时间内如果元素没有出现,Selenium 会等待直到超时

    }

    //用于测试用户界面
    @Test
    public void testUI(){
        takeScreenshot("testUI.png");
    }


    @Test
    public void test_Click() throws InterruptedException {
        // 1. 打开京东官网首页,选择城市为台湾
        Actions actions = new Actions(driver);
        WebElement city = driver.findElement(By.id("ttbar-mycity"));
        actions.moveToElement(city).perform();
        Thread.sleep(1500);
        driver.findElement(By.linkText("台湾")).click();
        Thread.sleep(1000);
        takeScreenshot("01_taiWan.png");

        // 2 .搜索框输入“家具”并搜索
        driver.findElement(By.id("key")).sendKeys("家具");
        Thread.sleep(1500);
        driver.findElement(By.xpath("//*[@id=\"search\"]/div/div[2]/button")).click();
        Thread.sleep(1500);

        driver.findElement(By.id("loginname")).sendKeys("lcc聪聪", Keys.TAB, "lcc20040220");
        Thread.sleep(1000);
        driver.findElement(By.id("loginsubmit")).click();
        Thread.sleep(20000);
        takeScreenshot("02_search.png");

        // 3 .选择【源氏木语】
        driver.findElement(By.linkText("源氏木语")).click();
        Thread.sleep(1000);
        takeScreenshot("03_yuanShiMuYu.png");

        // 4 .选择【边桌/茶几】
        driver.findElement(By.linkText("边桌/茶几")).click();
        Thread.sleep(1500);
        takeScreenshot("04_bianZhuo.png");

        // 5.选择【111-120cm】
        driver.findElement(By.linkText("111-120cm")).click();
        Thread.sleep(1500);
        takeScreenshot("05_111-120cm.png");

        // 6.选择【实木】
        driver.findElement(By.linkText("实木")).click();
        Thread.sleep(1500);
        takeScreenshot("06_shuMu.png");

        // 7.选择【可储物】
        driver.findElement(By.linkText("可储物")).click();
        Thread.sleep(1000);
        takeScreenshot("07_keCunWu.png");

        // 8. 按顺序点击【新品】【综合】【销量】【评论数】

        driver.findElement(By.linkText("新品")).click();
        driver.navigate().refresh();
        Thread.sleep(1000);
        takeScreenshot("08_1xinPin,png");

        driver.findElement(By.linkText("综合")).click();
        driver.navigate().refresh();
        Thread.sleep(1000);
        takeScreenshot("08_2zongHe.png");

        driver.findElement(By.linkText("销量")).click();
        driver.navigate().refresh();
        Thread.sleep(1000);
        takeScreenshot("08_3xiaoLiang.png");

        driver.findElement(By.linkText("评论数")).click();
        driver.navigate().refresh();
        Thread.sleep(1500);
        takeScreenshot("08_4pingLunShu.png");
        Thread.sleep(1500);

        // 9. 选择第一条信息
        WebDriverWait wait = new WebDriverWait(driver, 10);
        WebElement firstMassage = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//a[@target='_blank' and @title='源氏木语11.11抢先购,10.21号20点开启~享店铺满减~店铺券优惠~部分产品优惠百元~1.35*2M低铺实木床到手1239元起']")));
        firstMassage.click();
        Thread.sleep(1500);
        takeScreenshot("09_message.png");

        // 10.选择【茶几原木色1200*600*450mm】
        driver.switchTo().window(driver.getWindowHandles().toArray()[1].toString());
        driver.findElement(By.cssSelector("a[clstag='shangpin|keycount|product|yanse-茶几原木色1200*600*450mm']")).click();
        Thread.sleep(1500);
        takeScreenshot("10_yuanMuSe.png");

        // JavascriptExecutor executor = (JavascriptExecutor) driver;
        // executor.executeScript("window.scrollTo(0, 400)");
        driver.findElement(By.xpath("//*[@id=\"detail\"]/div[1]/ul/li[2]")).click();
        Thread.sleep(1500);
        takeScreenshot("11_choice1.png");
        driver.findElement(By.xpath("//*[@id=\"detail\"]/div[1]/ul/li[5]")).click();
        Thread.sleep(1500);
        takeScreenshot("11_choice2.png");
        driver.findElement(By.xpath("//*[@id=\"detail\"]/div[1]/ul/li[6]")).click();
        Thread.sleep(1500);
        takeScreenshot("11_choice3.png");

        // 12.返回第一个窗口并选择【超市】
        driver.switchTo().window(driver.getWindowHandles().toArray()[0].toString());
        driver.findElement(By.linkText("超市")).click();
        driver.switchTo().window(driver.getWindowHandles().toArray()[1].toString());
        Thread.sleep(3000);
        takeScreenshot("12_supermarket.png");

        // 13.返回上层窗口并关闭上层窗口
        driver.switchTo().window(driver.getWindowHandles().toArray()[2].toString());
        Thread.sleep(2000);
        takeScreenshot("13_return.png");
        driver.close();
        Thread.sleep(2000);


        // 14.跳转至【超市】页面,关闭【超市】页面
//        driver.switchTo().window(driver.getWindowHandles().toArray()[1].toString());
//        driver.close();
//        takeScreenshot("14_close.png");
//        Thread.sleep(1500);
        Set<String> windowHandles = driver.getWindowHandles();//取当前所有打开的浏览器窗口句柄,并将它们存储在一个Set集合中。每个窗口句柄都是一个唯一的字符串,代表一个窗口。
        String mainWindowHandle = windowHandles.iterator().next();//获取集合中的第一个窗口句柄,并将其赋值给变量mainWindowHandle
        windowHandles.remove(mainWindowHandle); // 从集合中移除主窗口的句柄。这样,集合中就只剩下非主窗口的句柄
        for (String handle : windowHandles) { //遍历集合中剩余的每个窗口句柄
            driver.switchTo().window(handle); //切换到当前循环中的窗口句柄对应的窗口
            driver.switchTo().window(mainWindowHandle);//次切换到非主窗口后,又立即切换回主窗口。这可能是为了确保在关闭非主窗口之前,主窗口仍然是活动的
        }
        takeScreenshot("14_closeSuperMarket.png");
        driver.close();



    }



    @AfterEach
    public void teardown() throws InterruptedException{
        Thread.sleep(2000);
        driver.quit();
    }


    private void takeScreenshot(String fileName) {
        File screenshotFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
        String projectPath = System.getProperty("user.dir"); // 获取项目根目录路径
        File destFile = new File(projectPath + File.separator + fileName);
        try {
            FileUtils.copyFile(screenshotFile, destFile);
            System.out.println("Screenshot saved: " + destFile.getAbsolutePath());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 第三种:

 

其实linkText查边桌茶几也是可以的。

在软件测试中,CSS选择器主要用于自动化测试工具,如Selenium WebDriver,来定位和操作网页元素。这些选择器允许测试脚本精确地找到页面上的特定元素,以便进行点击、输入文本、检查属性等操作。以下是一些在自动化测试中使用CSS选择器的基本步骤和示例:

### 1. 定位元素
在自动化测试脚本中,首先需要定位到你想要操作的元素。例如,如果你想要点击一个按钮,你需要先找到这个按钮的元素。

```javascript
// 使用Selenium WebDriver定位元素
var button = driver.findElement(By.cssSelector("#myButton"));
```

### 2. 执行操作
一旦定位到元素,就可以对其执行各种操作。例如,点击按钮、输入文本、检查元素属性等。

```javascript
// 点击按钮
button.click();

// 输入文本
var inputField = driver.findElement(By.cssSelector("#myInput"));
inputField.sendKeys("Hello, World!");

// 检查元素属性
var element = driver.findElement(By.cssSelector(".my-class"));
var attributeValue = element.getAttribute("title");
```

### 3. 断言和验证
在测试中,你可能需要验证某些条件是否满足,比如元素是否可见、是否包含特定文本等。

```javascript
// 检查元素是否可见
var isVisible = driver.findElement(By.cssSelector(".my-class")).isDisplayed();

// 检查元素是否包含特定文本
var elementText = driver.findElement(By.cssSelector("#myElement")).getText();
assert.include(elementText, "Expected Text");
```

### 4. 使用CSS选择器的技巧
- **使用ID选择器**:`#myId`,用于定位具有特定ID的元素。
- **使用类选择器**:`.myClass`,用于定位具有特定类的元素。
- **使用属性选择器**:`[type="text"]`,用于定位具有特定属性值的元素。
- **使用组合选择器**:`div p`,用于定位嵌套元素。
- **使用伪类选择器**:`:hover`,用于定位特定状态下的元素。

### 注意事项
- **确保选择器的唯一性**:尽量使用能够唯一确定元素的选择器,以避免定位错误。
- **选择器的灵活性**:在可能的情况下,使用更通用的选择器,以便在页面结构发生变化时,测试脚本仍然有效。
- **避免使用过于复杂的CSS选择器**:过于复杂的CSS选择器可能会导致定位失败,尤其是在页面结构发生变化时。

通过这些步骤,你可以有效地使用CSS选择器来定位和操作网页元素,从而实现自动化测试的目的。如果你有更具体的场景或问题,欢迎继续提问!         

package org.example;

import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.interactions.Actions;

import java.util.ArrayList;
import java.util.Set;

public class Example {


    public static void test(WebDriver driver) throws InterruptedException {

        driver.get("https://www.jd.com/");
        driver.findElement(By.className("style-red")).click();

        Set<String> winds0 = driver.getWindowHandles();//这行代码获取当前浏览器中所有窗口的句柄(handle),并将它们存储在一个Set集合中。getWindowHandles()方法返回一个包含当前浏览器中所有窗口句柄的集合
        ArrayList<String> list_win0 = new ArrayList<>(winds0);//这行代码将Set集合转换为ArrayList。由于Set集合不允许重复元素,它适合存储窗口句柄,因为每个窗口句柄都是唯一的。ArrayList则允许通过索引访问元素,这在后续操作中非常有用
        driver.switchTo().window(list_win0.get(list_win0.size() - 1));//这行代码使用switchTo().window()方法切换到指定的窗口。list_win0.get(list_win0.size() - 1)获取ArrayList中的最后一个元素,即最后一个窗口的句柄。size() - 1是因为集合的索引是从0开始的,所以最后一个元素的索引是集合大小减1


        driver.findElement(By.name("loginname")).sendKeys("19909284351");
        driver.findElement(By.name("nloginpwd")).sendKeys("han123456");
        driver.findElement(By.id("loginsubmit")).click();
        Thread.sleep(40000);

//		Thread.sleep(30000);
        System.out.println("登录完成。。。。。");


        //地址切换到台湾
        Actions actions = new Actions(driver);
        actions.moveToElement(driver.findElement(By.id("areamini"))).perform();
        Thread.sleep(1000);
        driver.findElement(By.linkText("台湾")).click();
        Thread.sleep(1500);

//    	driver.findElement(By.name("loginname")).sendKeys("19909284351");
//    	driver.findElement(By.name("nloginpwd")).sendKeys("han123456");
//    	Thread.sleep(40000);

        //搜索框中输入家具并点击搜索
        driver.findElement(By.id("key")).sendKeys("家具");
        Thread.sleep(1000);
        driver.findElement(By.xpath("//*[@id=\"search\"]/div/div[2]/button")).click();
        Thread.sleep(1500);

        //选择源氏木语
        driver.findElement(By.linkText("源氏木语")).click();
        Thread.sleep(1500);

        //选择【边桌/茶几】
        //*[@id="J_selector"]/div[7]/div/div[2]/div[1]/ul/li[1]/a
        driver.findElement(By.xpath("//a[@title='边桌/茶几']")).click();
        Thread.sleep(1500);

        //选择111-120cm
        driver.findElement(By.linkText("111-120cm")).click();
        Thread.sleep(1500);
        //*[@id="loginsubmit"]
//    	<a href="javascript:;" class="btn-img btn-entry" id="loginsubmit" tabindex="6" _submit="true" clstag="pageclick|keycount|passport_main|click_login_submit_button" style="outline: rgb(109, 109, 109) none 0px;">登&nbsp;&nbsp;&nbsp;&nbsp;录</a>

        //选择实木
//        driver.findElement(By.xpath("//*[@id=\"J_selector\"]/div[1]/div/div[2]/div[1]/ul/li[2]/a")).click();
        driver.findElement(By.linkText("实木")).click();
        Thread.sleep(1500);

        //选择可储物
//        driver.findElement(By.xpath("/html/body/div[5]/div[2]/div[1]/div[3]/div/div[2]/div[1]/ul/li[1]/a")).click();
        driver.findElement(By.linkText("可储物")).click();
        Thread.sleep(15000);

        //按顺序点击【新品】【综合】【销量】【评论数】
//        Thread.sleep(150000);
        driver.findElement(By.xpath("//*[@id=\"J_filter\"]/div[1]/div[1]/a[4]")).click();
        Thread.sleep(5000);
        driver.findElement(By.xpath("//*[@id=\"J_filter\"]/div[1]/div[1]/a[1]")).click();
        Thread.sleep(5000);
        driver.findElement(By.xpath("//*[@id=\"J_filter\"]/div[1]/div[1]/a[2]")).click();
        Thread.sleep(5000);
        driver.findElement(By.xpath("//*[@id=\"J_filter\"]/div[1]/div[1]/a[3]")).click();
        System.out.println("排序点击完毕。。。");
        Thread.sleep(10000);

        //选择第一条商品
        //*[@id="warecard_100036496249"]/div[1]/a/img
//        driver.findElement(By.xpath("//div[@id='warecard_100036496249']/div[1]/a/img")).click();
        driver.findElement(By.cssSelector("#J_goodsList .p-img a")).click();
//    	driver.findElement()
//    	<img width="220" height="220" data-img="1" data-lazy-img="done" source-data-lazy-img="" src="//img14.360buyimg.com/n7/jfs/t1/217558/39/45391/145095/6710d474F4b46b37e/17da7859224a928f.jpg.avif">
        Thread.sleep(1500);

        //选择【茶几原木色1200*600*450mm】
        Set<String> winds1 = driver.getWindowHandles();
        ArrayList<String> list_win1 = new ArrayList<>(winds1);
        driver.switchTo().window(list_win1.get(list_win1.size() - 1));
        driver.findElement(By.xpath("//*[@id=\"choose-attr-1\"]/div[2]/div[2]/a")).click();

        //依次选择【包装与规格】【售后保障】【商品评价】
        actions.sendKeys(Keys.PAGE_DOWN).perform();
//    	actions.sendKeys(Keys.PAGE_DOWN).perform();
        driver.findElement(By.xpath("//*[@id=\"detail\"]/div[1]/ul/li[2]")).click();
        driver.findElement(By.linkText("售后保障")).click();
        driver.findElement(By.xpath("//*[@id=\"detail\"]/div[1]/ul/li[5]")).click();
        Thread.sleep(1500);

        //返回第一个窗口并选择【超市】
        Set<String> winds2 = driver.getWindowHandles();
        ArrayList<String> list_win2 = new ArrayList<>(winds2);
        driver.switchTo().window(list_win2.get(list_win2.size() - 2));
        driver.findElement(By.className("b")).click();

        //返回源氏木语并关闭
        Set<String> winds3 = driver.getWindowHandles();
        ArrayList<String> list_win3 = new ArrayList<>(winds3);
        driver.switchTo().window(list_win3.get(list_win3.size() - 1));
        System.out.println(driver.getTitle());
        driver.close();
        Thread.sleep(1500);

        //跳转到超市页面并关闭
        Set<String> winds4 = driver.getWindowHandles();
        ArrayList<String> list_win4 = new ArrayList<>(winds4);
        driver.switchTo().window(list_win4.get(list_win4.size() - 1));
        driver.close();


    }

    public static void main(String[] args) {

//        WebDriver driver = new ChromeDriver();
        ChromeOptions chromeOptions = new ChromeOptions();
        chromeOptions.addArguments("--remote-allow-origins=*");
        WebDriver driver = new ChromeDriver(chromeOptions);
        try {
            test(driver);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            driver.quit();
        }
    }

}

 

 每次都是把所有的窗口的句柄先获得,上图中的每一获得都是当前的句柄个数

2.网易

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 Example_wy {

	public static void test(WebDriver driver) throws InterruptedException {
		// TODO Test script
		// eg:driver.get("https://www.baidu.com/")
		// eg:driver.findElement(By.id("wd"));

		// 3.加载浏览器

		// 4.通过chromeDriver打开浏览器https://www.jd.com/
		// chromeDriver.get("https://www.baidu.com/");
		driver.get("https://www.163.com/");
		Thread.sleep(1500);

		driver.manage().window().maximize();
		Thread.sleep(1500);

		// 2. 选择【家居】并做【点击】操作
		driver.findElement(By.linkText("家居")).click();
		driver.switchTo().window(driver.getWindowHandles().toArray()[1].toString());
		Thread.sleep(1000);

		// 3. 选择【设计师】并做【点击】操作
		driver.findElement(By.linkText("设计师")).click();

		driver.switchTo().window(driver.getWindowHandles().toArray()[2].toString());
		Thread.sleep(1500);

		// 4. 选择【家装案例】并做【点击】操作

		driver.findElement(By.linkText("家装案例")).click();
		driver.switchTo().window(driver.getWindowHandles().toArray()[3].toString());
		Thread.sleep(3000);

		// 5. 选择【户型】并做【点击】操作

		JavascriptExecutor executor = (JavascriptExecutor) driver;
		// executor.executeScript("window.scrollTo(0, 600)");
		// Thread.sleep(1500);
		driver.findElement(By.xpath("//*[@id=\"ne_wrap\"]/body/div[9]/span[2]")).click();
		Thread.sleep(1500);

		// 6. 选择【三居室】并做【点击】操作
		driver.findElement(By.xpath("//*[@id=\"ne_wrap\"]/body/div[10]/div[2]/div/span[6]")).click();
		Thread.sleep(1500);

		// 7. 选择【搜索】并做【点击】操作
		driver.findElement(By.xpath("//*[@id=\"ne_wrap\"]/body/div[9]/span[4]")).click();
		Thread.sleep(1500);

		// 8. 选择【输入框】并做【输入】操作,输入内容为【现代】
		driver.findElement(By.cssSelector("input[placeholder='请输入关键词']")).sendKeys("现代");
		Thread.sleep(1500);

		// 9. 选择确认【搜索】并做【点击】操作
		// driver.findElement(By.xpath("//*[@id=\"ne_wrap\"]/body/div[10]/div[4]/div/div")).click();
		driver.findElement(By.className("search")).click();
		Thread.sleep(1500);

		// 10.关闭当前【页面】选择并移至如图所示【页面】
		driver.close();
		driver.switchTo().window(driver.getWindowHandles().toArray()[2].toString());
		Thread.sleep(1500);

		// 11.选择【严选】并做【点击】操作
		driver.findElement(By.id("js_lofter_icon_url")).click();
		driver.switchTo().window(driver.getWindowHandles().toArray()[3].toString());
		Thread.sleep(1500);

		// 12.选择【数码家电】并做【点击】操作

		driver.findElement(By.linkText("数码家电")).click();
		driver.switchTo().window(driver.getWindowHandles().toArray()[4].toString());
		Thread.sleep(1500);

		// 13.选择【品质尖货】并做【点击】操作
		driver.findElement(By.linkText("品质尖货")).click();
		Thread.sleep(1500);

		// 14.选择【澳门】并做【点击】操作
		driver.findElement(By.linkText("澳门")).click();
		Thread.sleep(1500);

		// 15.选择【价格由高到低小箭头】并做【点击】操作
		driver.findElement(By.xpath("//*[@id=\"j-goodsAreaWrap\"]/div/div[2]/div[1]/div[3]/a[2]/div/i[2]")).click();
		Thread.sleep(1500);

		// 16.选择首条资源【图片】并做【点击】操作(注:页面如有变动,依然选择首张图片资源)
		// executor.executeScript("window.scrollTo(0, 300)");
		Thread.sleep(3000);
		driver.findElement(By.xpath("//*[@id=\"j-goodsAreaWrap\"]/div/div[2]/div[2]/ul/li[1]/div/div/div[1]/a/div/img"))
				.click();
		driver.switchTo().window(driver.getWindowHandles().toArray()[5].toString());
		Thread.sleep(1500);

		// 17.选择【评价】并做【点击】操作
		// executor.executeScript("window.scrollTo(0, 300)");
		WebElement pingJia = driver.findElement(By.xpath("//*[@id=\"detailNavTab\"]/div/div/div/ul/li[2]/span"));
		executor.executeScript("window.scrollTo(0, " + pingJia.getLocation().y + ")");
		pingJia.click();
		Thread.sleep(1500);

		// 18.选择【追评】并做【点击】操作
		driver.findElement(
				By.xpath("//*[@id=\"j-app\"]/div/div[2]/div[3]/div[1]/div[2]/div[1]/ul/div[1]/li/div/div[2]/span[3]"))
				.click();
		Thread.sleep(1500);

		// 19.选择【评价时间】并做【点击】操作

		driver.findElement(By.xpath("//*[@id=\"j-app\"]/div/div[2]/div[3]/div[1]/div[2]/div[1]/ul/div[2]/div/a[2]"))
				.click();
		Thread.sleep(1500);

		// 20.选择【回顶部】并做【点击】操作
		driver.findElement(By.id("j-yx-fixedtoolGoTop")).click();
		Thread.sleep(1500);

		// 21.选择【输入框】并做【输入】操作,输入【香薰】
		driver.findElement(By.name("searchInput")).sendKeys("香薰");
		Thread.sleep(2000);

		// 22.选择【搜索】并做【点击】操作
		driver.findElement(By.xpath("//*[@id=\"j-yx-cp-m-top\"]/div[2]/div/div[3]/div[2]")).click();
		Thread.sleep(2000);

		// 23.选择【母婴亲子】并做【点击】操作
		driver.findElement(By.xpath("//*[@id=\"j-searchContainer\"]/div/div/div/div[2]/div[1]/div[1]/div/a[1]"))
				.click();
		Thread.sleep(1500);

		// 24.选择【价格输入框】并做【输入】操作,输入内容为【10】
		driver.findElement(By.name("floorPrice")).sendKeys("10");
		Thread.sleep(1500);

		// 25.选择【价格输入框】并做【输入】操作,输入内容为【40】
		driver.findElement(By.name("upperPrice")).sendKeys("40");
		Thread.sleep(1500);

		// 26.选择【确定】并做【点击】操作
		driver.findElement(By.xpath("//*[@id=\"j-searchContainer\"]/div/div/div/div[2]/div[1]/div[2]/div/div[3]/a[1]"))
				.click();
		Thread.sleep(1500);

		// 27.选择首条资源【图片】并做【点击】操作

		driver.findElement(By.xpath(
				"//*[@id=\"j-searchContainer\"]/div/div/div/div[2]/div[2]/div[1]/ul/li/div/div/div[1]/a/div/img"))
				.click();
		driver.switchTo().window(driver.getWindowHandles().toArray()[6].toString());
		Thread.sleep(1500);

		// 28.选择【收藏】并做【点击】操作

		driver.findElement(By.className("w-collectZone")).click();
		Thread.sleep(1500);

	}

	public static void main(String[] args) {
		// Run main function to test your script.
		System.setProperty("webdriver.chrome.driver", "C:\\google\\chrome-win64\\chrome-win64\\chromedriver.exe");
		WebDriver driver = new ChromeDriver();
		try {
			test(driver);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			driver.quit();
		}
	}

}
package test;

import org.apache.commons.io.FileUtils;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
import org.openqa.selenium.*;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

import java.io.File;
import java.io.IOException;
import java.util.concurrent.TimeUnit;

public class test163 {
    private WebDriver driver;
    @BeforeEach
    public void setUp(){
        System.setProperty("webdriver.chrome.driver", "D:\\RuanJian\\google\\chrome-win64\\chrome-win64\\chromedriver.exe");

        ChromeOptions chromeOptions = new ChromeOptions();
        chromeOptions.addArguments("--remote-allow-origins=*");
        driver = new ChromeDriver(chromeOptions);

        driver.get("https://www.163.com/");
      //  1. 打开网易首页,并最大化窗口
        driver.manage().window().maximize();
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        //设置隐式等待时间为 10 秒,即在一定时间内如果元素没有出现,Selenium 会等待直到超时

    }

    //用于测试用户界面
    @Test
    public void testUI(){
        takeScreenshot("testUI.png");
    }


    @Test
    public void test_Click() throws InterruptedException {
        //2. 选择【家居】并做【点击】操作
        driver.findElement(By.linkText("家居")).click();
        driver.switchTo().window(driver.getWindowHandles().toArray()[1].toString());
        takeScreenshot("01_jiaJu.png");

        //3. 选择【设计师】并做【点击】操作
        driver.findElement(By.linkText("设计师")).click();
        driver.switchTo().window(driver.getWindowHandles().toArray()[2].toString());
        takeScreenshot("02_sheJiShi.png");

        //4. 选择【家装案例】并做【点击】操作
        driver.findElement(By.linkText("家装案例")).click();
        driver.switchTo().window(driver.getWindowHandles().toArray()[3].toString());
        takeScreenshot("03_jiaZhang.png");

        //5. 选择【户型】并做【点击】操作
        JavascriptExecutor executor = (JavascriptExecutor) driver;
        *[@id="ne_wrap"]/body/div[9]/span[2]
        WebDriverWait wait = new WebDriverWait(driver, 20);
        WebElement huXing = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id=\"ne_wrap\"]/body/div[9]/span[2]")));
        executor.executeScript("window.scrollTo(0,700)");      //  executor.executeScript("arguments[0].scrollIntoView(true);", huXing);
        //executor.executeScript("Window.scrollTo(0,"    + huXing.getLocation().y + ")");
        huXing.click();
        takeScreenshot("04_huXing.png");

        //6. 选择【三居室】并做【点击】操作
        driver.findElement(By.xpath("//*[@id=\"ne_wrap\"]/body/div[10]/div[2]/div/span[6]")).click();
        takeScreenshot("05_sanJiShi.png");

        //7. 选择【搜索】并做【点击】操作
        driver.findElement(By.xpath("//*[@id=\"ne_wrap\"]/body/div[9]/span[4]")).click();
        takeScreenshot("06_souSuo.png");

        //8. 选择【输入框】并做【输入】操作,输入内容为【现代】
        //driver.findElement(By.xpath("//*[@id=\"ne_wrap\"]/body/div[10]/div[4]/div/input")).sendKeys("现代");
        driver.findElement(By.cssSelector("input[placeholder='请输入关键词']")).sendKeys("现代");
        takeScreenshot("07_xianDai.png");

        //9. 选择确认【搜索】并做【点击】操作
    //driver.findElement(By.xpath("//*[@id=\"ne_wrap\"]/body/div[10]/div[4]/div/div")).click();
        driver.findElement(By.className("search")).click();
    Thread.sleep(2000);
    takeScreenshot("08_queRen.png");

    //10.关闭当前【页面】选择并移至如图所示【页面】
    driver.close();
        driver.switchTo().window(driver.getWindowHandles().toArray()[2].toString());
        Thread.sleep(2000);
        takeScreenshot("09_close.png");

        //11.选择【严选】并做【点击】操作
        driver.findElement(By.id("js_lofter_icon_url")).click();

    //driver.findElement(By.xpath("//*[@id=\"js_lofter_icon_url\"]")).click();
    driver.switchTo().window(driver.getWindowHandles().toArray()[3].toString());
    takeScreenshot("10_yanXuan.png");
        Thread.sleep(1500);

    //12.选择【数码家电】并做【点击】操作
    driver.findElement(By.linkText("数码家电")).click();
    driver.switchTo().window(driver.getWindowHandles().toArray()[4].toString());
    takeScreenshot("11_shuMa.png");

    //13.选择【品质尖货】并做【点击】操作
    driver.findElement(By.linkText("品质尖货")).click();
    takeScreenshot("12_pinZhi.png");

    //14.选择【澳门】并做【点击】操作
    driver.findElement(By.linkText("澳门")).click();
    takeScreenshot("13_aoMen.png");

    //15.选择【价格由高到低小箭头】并做【点击】操作
    driver.findElement(By.xpath("//*[@id=\"j-goodsAreaWrap\"]/div/div[2]/div[1]/div[3]/a[2]/div/i[2]")).click();
    takeScreenshot("14_xiaoJianTou.png");

    //16.选择首条资源【图片】并做【点击】操作(注:页面如有变动,依然选择首张图片资源)
//    executor.executeScript("window.scrollTo(0, 300)");
    Thread.sleep(6000);
    driver.findElement(By.xpath("//*[@id=\"j-goodsAreaWrap\"]/div/div[2]/div[2]/ul/li[1]/div/div/div[1]/a/div/img")).click();
    driver.switchTo().window(driver.getWindowHandles().toArray()[5].toString());
    takeScreenshot("15_first.png");

    //17.选择【评价】并做【点击】操作
    //executor.executeScript("window.scrollTo(0, 300)");
    WebElement pingJia = driver.findElement(By.xpath("//*[@id=\"detailNavTab\"]/div/div/div/ul/li[2]/span"));
    executor.executeScript("window.scrollTo(0, "  + pingJia.getLocation().y  + ")");
    pingJia.click();
    Thread.sleep(1500);
    takeScreenshot("16_pingJia.png");

    //18.选择【追评】并做【点击】操作

    driver.findElement(By.xpath("//*[@id=\"j-app\"]/div/div[2]/div[3]/div[1]/div[2]/div[1]/ul/div[1]/li/div/div[2]/span[3]")).click();
        Thread.sleep(2000);
    takeScreenshot("17_zhuiPing.png");


    //19.选择【评价时间】并做【点击】操作
    //driver.findElement(By.xpath("//*[@id=\"j-app\"]/div/div[2]/div[3]/div[1]/div[2]/div[1]/ul/div[2]/div/a[2]")).click();
    WebElement pingJiaShiJian = driver.findElement(By.xpath("//*[@id=\"j-app\"]/div/div[2]/div[3]/div[1]/div[2]/div[1]/ul/div[2]/div/a[2]"));
    //executor.executeScript("window.scrollTo(0, 600)");
    pingJiaShiJian.click();
    takeScreenshot("18_pingJiaShiJian.png");

    //20.选择【回顶部】并做【点击】操作
        Thread.sleep(5000);
    driver.findElement(By.id("j-yx-fixedtoolGoTop")).click();
    takeScreenshot("19_huiJingBu.png");

    //
        //21.选择【输入框】并做【输入】操作,输入【香薰】
        WebElement input = wait.until(ExpectedConditions.visibilityOfElementLocated(By.name("searchInput")));
        input.sendKeys("香薰");
        Thread.sleep(2000);
        takeScreenshot("20_input.png");

        //22.选择【搜索】并做【点击】操作
        driver.findElement(By.xpath("//*[@id=\"j-yx-cp-m-top\"]/div[2]/div/div[3]/div[2]")).click();
        Thread.sleep(2000);
        takeScreenshot("21_search.png");

        //23.选择【母婴亲子】并做【点击】操作
        WebElement muYingQinZi = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id=\"j-searchContainer\"]/div/div/div/div[2]/div[1]/div[1]/div/a[1]")));
        muYingQinZi.click();
        Thread.sleep(2000);
        takeScreenshot("22_muYingCaoZuo.png");

        //24.选择【价格输入框】并做【输入】操作,输入内容为【10】
        driver.findElement(By.name("floorPrice")).sendKeys("10");
        Thread.sleep(2000);
        takeScreenshot("23_input1.png");

        //25.选择【价格输入框】并做【输入】操作,输入内容为【40】
        driver.findElement(By.name("upperPrice")).sendKeys("40");
        Thread.sleep(2000);
        takeScreenshot("24_input2.png");

        //26.选择【确定】并做【点击】操作
        driver.findElement(By.xpath("//*[@id=\"j-searchContainer\"]/div/div/div/div[2]/div[1]/div[2]/div/div[3]/a[1]")).click();
        Thread.sleep(2000);
        takeScreenshot("25_queDing.png");

        //27.选择首条资源【图片】并做【点击】操作
        driver.findElement(By.xpath("//*[@id=\"j-searchContainer\"]/div/div/div/div[2]/div[2]/div[1]/ul/li/div/div/div[1]/a/div/img")).click();
        driver.switchTo().window(driver.getWindowHandles().toArray()[6].toString());
        Thread.sleep(2000);
        takeScreenshot("26_tuPian.png");

        //28.选择【收藏】并做【点击】操作
        WebElement shouCang = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id=\"j-app\"]/div/div[2]/div[1]/div[2]/div[3]/div")));
        shouCang.click();
        takeScreenshot("27_shouCang.png");



        //29.点个错查
        wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//*[@id=\"yx-widgetDialogContainer\"]/div[2]/div/div/div[1]/div"))).click();
        WebElement shouCang2 = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//*[@id=\"j-app\"]/div/div[2]/div[1]/div[2]/div[3]/div/div[1]")));
        shouCang.click();
        Thread.sleep(2000);
        takeScreenshot("28_shouCang.png");


    }



    @AfterEach
    public void teardown() throws InterruptedException{
        Thread.sleep(2000);
        driver.quit();
    }


    private void takeScreenshot(String fileName) {
        File screenshotFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
        String projectPath = System.getProperty("user.dir"); // 获取项目根目录路径
        File destFile = new File(projectPath + File.separator + fileName);
        try {
            FileUtils.copyFile(screenshotFile, destFile);
            System.out.println("Screenshot saved: " + destFile.getAbsolutePath());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值