【问题标题】:How to solve unable to drive module description for ../selenium-server-standalone-3.141.59.jar [duplicate]如何解决无法驱动../selenium-server-standalone-3.141.59.jar 的模块描述 [重复]
【发布时间】:2019-08-23 18:11:07
【问题描述】:

启动层初始化时出错 java.lang.module.FindException:无法为 C:\Users\admin\eclipse-workspace\Testing\lib\selenium-server-standalone.jar 派生模块描述符

Caused by: java.lang.module.InvalidModuleDescriptorException: Provider class org.eclipse.jetty.http.Http1FieldPreEncoder not in module
package Testing;

import com.thoughtworks.selenium.DefaultSelenium;
import com.thoughtworks.selenium.Selenium;

public class Testing {

    public static void main(String[] args) throws InterruptedException
    {
        Selenium selenium= new DefaultSelenium("localhost",4444,"firefox","http://www.calculator.net");
        selenium.start();
        selenium.open("/");
        selenium.windowMaximize();
        selenium.click("xpath=.//*[@id=''hl3']/li[3]/a"); 
        Thread.sleep(4000);
        selenium.focus("id=cpar1");
         selenium.type("css=input[id=\"cpar1\"]", "10"); 
        selenium.focus("id=cpar2"); 
         selenium.type("css=input[id=\"cpar2\"]", "50"); 
         (selenium).click("xpath=.//*[@id='content']/table[1]/tbody/tr[2]/td/input[2]"); 
         // verify if the result is 5
         Thread.sleep(4000);
         String result = selenium.getText("xpath=.//*[@id='content']/p[2]/font/b");
         //String result = selenium.getValue("xpath=.//*[@id='cpar3']");
         System.out.println("Result:"+result);

         if (result.equals("5")/*== "5"*/){
            System.out.println("Pass");
         }
         else{
            System.out.println("Fail");
         }

    }

}

【问题讨论】:

  • 确保 lib jars 在你的构建路径上。
  • 尝试使用maven或gradle之类的依赖管理器,而不是下载jar并添加到项目中

标签: java eclipse selenium


【解决方案1】:
  1. 我建议重新考虑使用Selenium Remote Control,因为它已经过时,不再受支持,Selenium Java 客户端的当前稳定版本是3.141.59,它提供了WebDriver API,目前是W3C Standard
  2. 一旦你实施了选项 1,就摆脱那些Thread.sleep(),因为它是某种形式的性能anti-pattern,改为使用Explicit Wait,查看How to use Selenium to test web applications using AJAX technology 以获得全面的解释和代码示例。

  3. 最好使用像Apache Maven 这样的依赖管理解决方案,它会自动检测并下载您的项目transitive dependencies。相关的 pom.xml 文件类似于:

    <?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>com.example</groupId>
        <artifactId>selenium</artifactId>
        <version>1.0-SNAPSHOT</version>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>8</source>
                        <target>8</target>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    
        <dependencies>
            <dependency>
                <groupId>org.seleniumhq.selenium</groupId>
                <artifactId>selenium-java</artifactId>
                <version>3.141.59</version>
            </dependency>
        </dependencies>
    
    </project>
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-05
    • 2019-06-27
    • 2014-09-05
    相关资源
    最近更新 更多