- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Eclipse 中使用 Selenium Web Driver 和 Java,我试图从存储在包文件夹下的 src 文件夹中的“Object.Properties”文件中读取 xpath/Class id/link id,并从数据库填充测试数据。但是,从以下属性文件脚本读取第二个属性后,不再读取电子邮件、密码和提交的属性。我无法弄清楚为什么脚本不读取这些属性。
我的脚本将使用存储在包文件夹下的 src 文件夹中的“Object.Properties”文件中的 xpath/Class id/link id 来识别 Web 字段、按钮、链接。对于网页字段脚本将从数据库中获取测试数据并将其填充到网页上的特定字段中。
以下属性存储在“Object.Properties”文件中,该属性文件存储在包文件夹下的 src 文件夹中:
URL = http://web.com/user-portal
ClickOnLoginLink = //*[@id='app']/div/main/section/ul/li[1]/a
Email = //input[@name='username']
Pwd = //input[@name='password']
Submit = //button[@name='loginButton']
以下失败异常显示:
org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"xpath","selector":"//input[@name='username']"}
Command duration or timeout: 12 milliseconds
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
Build info: version: '2.52.0', revision: '4c2593c', time: '2016-02-11 19:03:33'
System info: host: 'CAEITVDI-085', ip: '172.23.212.109', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.8.0_66'
Driver info: org.openqa.selenium.firefox.FirefoxDriver
Capabilities [{applicationCacheEnabled=true, rotatable=false, handlesAlerts=true, databaseEnabled=true, version=41.0.1, platform=WINDOWS, nativeEvents=false, acceptSslCerts=true, webStorageEnabled=true, locationContextEnabled=true, browserName=firefox, takesScreenshot=true, javascriptEnabled=true, cssSelectorsEnabled=true}]
Session ID: d0672bd2-d9d0-413e-a734-1865a9cce733
*** Element info: {Using=xpath, value=//input[@name='username']}
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:206)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:158)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:678)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:363)
at org.openqa.selenium.remote.RemoteWebDriver.findElementByXPath(RemoteWebDriver.java:500)
at org.openqa.selenium.By$ByXPath.findElement(By.java:361)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:355)
at com.provider.ProApp.testUserNamePassword(ProApp.java:76)
at com.provider.ProApp.setUpConnection(ProApp.java:42)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:85)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:639)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:816)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1124)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:108)
at org.testng.TestRunner.privateRun(TestRunner.java:774)
at org.testng.TestRunner.run(TestRunner.java:624)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:359)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:354)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:312)
at org.testng.SuiteRunner.run(SuiteRunner.java:261)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1215)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1140)
at org.testng.TestNG.run(TestNG.java:1048)
at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:112)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:205)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:176)
Caused by: org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"xpath","selector":"//input[@name='username']"}
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
Build info: version: '2.52.0', revision: '4c2593c', time: '2016-02-11 19:03:33'
System info: host: 'CAEITVDI-085', ip: '172.23.212.109', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.8.0_66'
Driver info: driver.version: unknown
at <anonymous class>.FirefoxDriver.prototype.findElementInternal_(file:///C:/Users/SAV19734/AppData/Local/Temp/anonymous6689352326673970234webdriver-profile/extensions/fxdriver@googlecode.com/components/driver-component.js:10723)
at <anonymous class>.FirefoxDriver.prototype.findElement(file:///C:/Users/SAV19734/AppData/Local/Temp/anonymous6689352326673970234webdriver-profile/extensions/fxdriver@googlecode.com/components/driver-component.js:10732)
at <anonymous class>.DelayedCommand.prototype.executeInternal_/h(file:///C:/Users/SAV19734/AppData/Local/Temp/anonymous6689352326673970234webdriver-profile/extensions/fxdriver@googlecode.com/components/command-processor.js:12614)
at <anonymous class>.DelayedCommand.prototype.executeInternal_(file:///C:/Users/SAV19734/AppData/Local/Temp/anonymous6689352326673970234webdriver-profile/extensions/fxdriver@googlecode.com/components/command-processor.js:12619)
at <anonymous class>.DelayedCommand.prototype.execute/<(file:///C:/Users/SAV19734/AppData/Local/Temp/anonymous6689352326673970234webdriver-profile/extensions/fxdriver@googlecode.com/components/command-processor.js:12561)
这是我的基类代码:
package com.provider;
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Properties;
import oracle.net.ns.NetException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.BeforeSuite;
public class BaseClass {
static WebDriver driver;
@BeforeSuite
public void setup() throws InterruptedException, IOException{
driver=new FirefoxDriver();
driver.manage().window().maximize();
Properties obj = new Properties();
FileInputStream objfile = new FileInputStream(System.getProperty("user.dir") +"\\src\\com\\provider\\Object.Properties");
obj.load(objfile);
driver.get(obj.getProperty("URL"));
}
}
这是我的扩展类代码:
package com.provider;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.testng.Assert;
import org.testng.annotations.Test;
public class ProApp extends BaseClass{
@Test
public void setUpConnection() throws ClassNotFoundException, SQLException, FileNotFoundException, InterruptedException, IOException {
String driver_DBPath = "jdbc:oracle:thin:@Host:Port:SID";
String DB_username = "*****";
String DB_password = "*****";
String Query = "select * from Table";
Connection con = DriverManager.getConnection(driver_DBPath, DB_username, DB_password);
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(Query);
while(rs.next()){
String Email = rs.getString("CLAIM_NUMBER");
String Pwd = rs.getString("INDIVIDUAL_NUM");
testUserNamePassword(Email, Pwd);
}
}
@Test(priority=1)
public void clickLoginLink() throws InterruptedException, IOException {
Properties obj = new Properties();
FileInputStream objfile = new FileInputStream(System.getProperty("user.dir") +"\\src\\com\\provider\\Object.Properties");
obj.load(objfile);
Thread.sleep(1000);
driver.findElement(By.xpath(obj.getProperty("ClickOnLoginLink"))).click();
Thread.sleep(1000);
}
@Test(priority=2)
public void testUserNamePassword(String Email1, String Pwd1) throws InterruptedException, IOException {
Thread.sleep(1000);
Properties obj = new Properties();
FileInputStream objfile = new FileInputStream(System.getProperty("user.dir") +"\\src\\com\\provider\\Object.Properties");
obj.load(objfile);
Thread.sleep(1000);
driver.findElement(By.xpath(obj.getProperty("Email"))).clear();
Thread.sleep(1000);
driver.findElement(By.xpath(obj.getProperty("Email"))).sendKeys(Email1);
Thread.sleep(1000);
driver.findElement(By.xpath(obj.getProperty("Pwd"))).clear();
Thread.sleep(1000);
driver.findElement(By.xpath(obj.getProperty("Pwd"))).sendKeys(Pwd1);
Thread.sleep(1000);
driver.findElement(By.xpath(obj.getProperty("Submit"))).click();
Thread.sleep(1000);
}
@Test(priority=3)
public void loginVerify() throws InterruptedException, IOException{
Properties obj = new Properties();
FileInputStream objfile = new FileInputStream(System.getProperty("user.dir") +"\\src\\com\\provider\\Object.Properties");
obj.load(objfile);
Assert.assertEquals("Wel Come To Testing World!!!", driver.findElement(By.xpath(obj.getProperty("WelComeToTestingWorld"))).getText());
}
@Test(priority=4)
public void logonVerify() throws InterruptedException, IOException{
Properties obj = new Properties();
FileInputStream objfile = new FileInputStream(System.getProperty("user.dir") +"\\src\\com\\provider\\Object.Properties");
obj.load(objfile);
WebElement DashboardHeader = driver.findElement(By.xpath(obj.getProperty("WelComeToTestingWorld")));
DashboardHeader.getText().equals("Wel Come To Testing World!!!");
}
}
最佳答案
实际上,我发现我没有给出优先级,我已经提供了数据库连接方法信息,以便当脚本运行时,脚本遵循 TestNG 框架来执行测试,并且脚本开始执行 Test(priority=1 ),测试(优先级= 2)等等...对于数据库连接,我在启动数据库连接方法之前只提供了“测试”。我还应该将数据库连接方法优先考虑为测试(优先级= 2)。因此,只需优先考虑数据库连接方法即可解决我的问题。
关于java - Selenium Web 驱动程序 Java 代码无法从存储在包文件夹下的 src 文件夹中的 "Object.Properties"文件中读取 xpath/Class id/link id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36092715/
我正在编写一个具有以下签名的 Java 方法。 void Logger(Method method, Object[] args); 如果一个方法(例如 ABC() )调用此方法 Logger,它应该
我是 Java 新手。 我的问题是我的 Java 程序找不到我试图用作的图像文件一个 JButton。 (目前这段代码什么也没做,因为我只是得到了想要的外观第一的)。这是我的主课 代码: packag
好的,今天我在接受采访,我已经编写 Java 代码多年了。采访中说“Java 垃圾收集是一个棘手的问题,我有几个 friend 一直在努力弄清楚。你在这方面做得怎么样?”。她是想骗我吗?还是我的一生都
我的 friend 给了我一个谜语让我解开。它是这样的: There are 100 people. Each one of them, in his turn, does the following
如果我将使用 Java 5 代码的应用程序编译成字节码,生成的 .class 文件是否能够在 Java 1.4 下运行? 如果后者可以工作并且我正在尝试在我的 Java 1.4 应用程序中使用 Jav
有关于why Java doesn't support unsigned types的问题以及一些关于处理无符号类型的问题。我做了一些搜索,似乎 Scala 也不支持无符号数据类型。限制是Java和S
我只是想知道在一个 java 版本中生成的字节码是否可以在其他 java 版本上运行 最佳答案 通常,字节码无需修改即可在 较新 版本的 Java 上运行。它不会在旧版本上运行,除非您使用特殊参数 (
我有一个关于在命令提示符下执行 java 程序的基本问题。 在某些机器上我们需要指定 -cp 。 (类路径)同时执行java程序 (test为java文件名与.class文件存在于同一目录下) jav
我已经阅读 StackOverflow 有一段时间了,现在我才鼓起勇气提出问题。我今年 20 岁,目前在我的家乡(罗马尼亚克卢日-纳波卡)就读 IT 大学。足以介绍:D。 基本上,我有一家提供簿记应用
我有 public JSONObject parseXML(String xml) { JSONObject jsonObject = XML.toJSONObject(xml); r
我已经在 Java 中实现了带有动态类型的简单解释语言。不幸的是我遇到了以下问题。测试时如下代码: def main() { def ks = Map[[1, 2]].keySet()
一直提示输入 1 到 10 的数字 - 结果应将 st、rd、th 和 nd 添加到数字中。编写一个程序,提示用户输入 1 到 10 之间的任意整数,然后以序数形式显示该整数并附加后缀。 public
我有这个 DownloadFile.java 并按预期下载该文件: import java.io.*; import java.net.URL; public class DownloadFile {
我想在 GUI 上添加延迟。我放置了 2 个 for 循环,然后重新绘制了一个标签,但这 2 个 for 循环一个接一个地执行,并且标签被重新绘制到最后一个。 我能做什么? for(int i=0;
我正在对对象 Student 的列表项进行一些测试,但是我更喜欢在 java 类对象中创建硬编码列表,然后从那里提取数据,而不是连接到数据库并在结果集中选择记录。然而,自从我这样做以来已经很长时间了,
我知道对象创建分为三个部分: 声明 实例化 初始化 classA{} classB extends classA{} classA obj = new classB(1,1); 实例化 它必须使用
我有兴趣使用 GPRS 构建车辆跟踪系统。但是,我有一些问题要问以前做过此操作的人: GPRS 是最好的技术吗?人们意识到任何问题吗? 我计划使用 Java/Java EE - 有更好的技术吗? 如果
我可以通过递归方法反转数组,例如:数组={1,2,3,4,5} 数组结果={5,4,3,2,1}但我的结果是相同的数组,我不知道为什么,请帮助我。 public class Recursion { p
有这样的标准方式吗? 包括 Java源代码-测试代码- Ant 或 Maven联合单元持续集成(可能是巡航控制)ClearCase 版本控制工具部署到应用服务器 最后我希望有一个自动构建和集成环境。
我什至不知道这是否可能,我非常怀疑它是否可能,但如果可以,您能告诉我怎么做吗?我只是想知道如何从打印机打印一些文本。 有什么想法吗? 最佳答案 这里有更简单的事情。 import javax.swin
我是一名优秀的程序员,十分优秀!