Selenium+Java+Testng+Allure+POM文件(可直接使用)

1.问题一
java.lang.NoClassDefFoundError: org/testng/IInvokedMethodListener2
降低testng版本号:

<dependency>
  <groupId>org.testng</groupId>
  <artifactId>testng</artifactId>
  <version>6.9.10</version>
  <scope>test</scope>
</dependency>

2.POM文件

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.example</groupId>
  <artifactId>UiTest003</artifactId>
  <version>1.0-SNAPSHOT</version>

  <name>UiTest003</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <aspectj.version>1.8.5</aspectj.version>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>
  <dependencies>
    <dependency>
      <groupId>org.seleniumhq.selenium</groupId>
      <artifactId>selenium-java</artifactId>
      <version>3.14.0</version>
    </dependency>
    <dependency>
      <groupId>org.seleniumhq.selenium</groupId>
      <artifactId>selenium-api</artifactId>
      <version>3.14.0</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.testng</groupId>
      <artifactId>testng</artifactId>
      <version>6.9.10</version>
    </dependency>
    <dependency>
      <groupId>org.seleniumhq.selenium</groupId>
      <artifactId>selenium-chrome-driver</artifactId>
      <version>3.14.0</version>
    </dependency>
    <dependency>
      <groupId>org.assertj</groupId>
      <artifactId>assertj-db</artifactId>
      <version>1.1.1</version>
    </dependency>
    <dependency>
      <groupId>com.relevantcodes</groupId>
      <artifactId>extentreports</artifactId>
      <version>2.41.2</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/com.vimalselvam/testng-extentsreport -->
    <dependency>
      <groupId>com.vimalselvam</groupId>
      <artifactId>testng-extentsreport</artifactId>
      <version>1.3.1</version>
    </dependency>
    <dependency>
      <groupId>com.aventstack</groupId>
      <artifactId>extentreports</artifactId>
      <version>3.1.3</version>
    </dependency>
    <!-- 依赖reportNg 关联testNg-->
    <dependency>
      <groupId>org.uncommons</groupId>
      <artifactId>reportng</artifactId>
      <version>1.1.4</version>
      <exclusions>
        <exclusion>
          <groupId>org.testng</groupId>
          <artifactId>testng</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

    <dependency>
      <groupId>ru.yandex.qatools.allure</groupId>
      <artifactId>allure-testng-adaptor</artifactId>
      <version>1.3.6</version>
      <exclusions>
        <exclusion>
          <groupId>org.testng</groupId>
          <artifactId>testng</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

    <!-- 依赖Guice -->
    <dependency>
      <groupId>com.google.inject</groupId>
      <artifactId>guice</artifactId>
      <version>4.0</version>
    </dependency>

    <dependency>
      <groupId>io.qameta.allure</groupId>
      <artifactId>allure-testng</artifactId>
      <version>2.6.0</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.aspectj</groupId>
      <artifactId>aspectjweaver</artifactId>
      <version>${aspectj.version}</version>
    </dependency>
  </dependencies>
  <build>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-site-plugin</artifactId>
          <version>3.7.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-project-info-reports-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
        <plugin>
          <!-- maven-surefire-plugin 配合testng/junit执行测试用例的maven插件 -->
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.1</version>
          <configuration>
            <!-- 测试失败后,是否忽略并继续测试 -->
            <testFailureIgnore>true</testFailureIgnore>
            <suiteXmlFiles>
              <!-- testng配置文件名称  -->
              <suiteXmlFile>testng.xml</suiteXmlFile>
            </suiteXmlFiles>
            <!--设置参数命令行 -->
            <argLine>
              <!-- UTF-8编码 -->
              -Dfile.encoding=UTF-8
              <!-- 配置拦截器 -->
              -javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"
            </argLine>
            <systemProperties>
              <property>
                <!-- 配置 allure 结果存储路径  -->
                <name>allure.results.directory</name>
                <value>./target/allure-results</value>
              </property>
            </systemProperties>
          </configuration>
          <dependencies>
            <!-- aspectjweaver maven坐标 -->
            <dependency>
              <groupId>org.aspectj</groupId>
              <artifactId>aspectjweaver</artifactId>
              <version>${aspectj.version}</version>
            </dependency>
          </dependencies>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

3.一些方法的封装

/**
     * 封装By by
     * 定位信息,比如id=kw
     * @param var 格式xpath=//*[@id="kw"]
     * @return  org.openqa.selenium.By
     */
public static By Byby (String var) {
        List list = Arrays.asList(var.split("=", 2));
        if (list.size() < 2 || "".equals(list.get(1))) {
            return null;
        }
        String loc = String.valueOf(list.get(1));
        switch (String.valueOf(list.get(0).toString().toUpperCase())) {
            case "ID":
                return By.id(loc);
            case "NAME":
                return By.name(loc);
            case "XPATH":
                return By.xpath(loc);
            case "CSS":
                return By.cssSelector(loc);
            case "TAG":
                return By.tagName(loc);
            case "CLASS":
                return By.className(loc);
            case "LINKTEXT":
                return By.linkText(loc);
            case "PARTIALLINKTEXT":
                return By.partialLinkText(loc);
            default:
                return null;
        }
    }
    /**
     * 封装Element
     * */
    public WebElement element(By by){
        WebElement ele = driver.findElement(by);
        return ele;
    }
    @Test
    public void SelectChar(){
        this.element(this.Byby("xpath=//*[@id=\"app\"]/div[1]/div[2]/div/div/div[1]/form/div[3]/div/button[2]/span")).click();
        Assert.assertTrue(driver.getPageSource().contains("订单"));
    }
/**
     * 封装driver
     * */
public WebDriver driverName(String browser){
        if(browser.equalsIgnoreCase("fireFox")){
            System.setProperty("webdriver.firefox.marionette","D:\\java\\geckodriver\\geckodriver-v0.14.0-win64\\geckodriver.exe");
            return new FirefoxDriver();
        }else{
            System.setProperty("webdriver.chrome.driver", "src/test/Driver/chromedriver.exe");
            return new ChromeDriver();
        }
    }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值