在jenkins中找不到相同的元素,但在eclipse IDE中运行时找到了
我有一种方法可以在我的自动化套件中定期调用我的测试用例。
此方法如下:
public void FillCarNo(WebDriver d, String CarNo) throws Throwable
{
//Actiondriver.waitForElement(d, AppointmentBooking.CarRegistration, 5);
System.out.println("Before using car registration");
String no= Actiondriver.getAttribute(d, AppointmentBooking.CarRegistration, "value", "Car Registration Number");
Thread.sleep(1000);
System.out.println("This"+no+"is");
System.out.println("After using car registration");
if(no.equalsIgnoreCase(""))
{
System.out.println("Inside car registration if loop");
Actiondriver.waitForElement(d, AppointmentBooking.CarRegistration, 20);
Actiondriver.type(d, AppointmentBooking.CarRegistration, CarNo, "Entering Car Number");
System.out.println("After car registration if loop");
Thread.sleep(1000);
}
else
{
System.out.println("Car Registration Number already filled");
}
}
现在,当我在Eclipse IDE中运行Test Suite时,它成功地执行了整个套件,但是当我在Jenkins中运行相同的套件时,它找不到抛出元素错误。
Before using car registration
Thisis
After using car registration
Inside car registration if loop
Unable to locate element: {"method":"xpath","selector":"//* [@id='carRegistrationNumber']"}
Command duration or timeout: 33 milliseconds
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
Build info: version: '2.53.0', revision: '35ae25b1534ae328c771e0856c93e187490ca824', time: '2016-03-15 10:43:46'
System info: host: 'ROBER-QA', ip: '192.168.137.1', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_91'
Driver info: org.openqa.selenium.firefox.FirefoxDriver
Capabilities [{applicationCacheEnabled=true, rotatable=false, handlesAlerts=true, databaseEnabled=true, version=45.0, platform=WINDOWS, nativeEvents=false, acceptSslCerts=true, webStorageEnabled=true, locationContextEnabled=true, browserName=firefox, takesScreenshot=true, javascriptEnabled=true, cssSelectorsEnabled=true}]
Session ID: 4ec86b11-94e9-48eb-97c7-71b676912654
*** Element info: {Using=xpath, value=//*[@id='carRegistrationNumber']}
正如你可以在控制台输出中看到的那样,元素CarRegistration在.getAttribute的第一位工作正常,但在if循环中它会抛出Element not found错误。
元素如下:
public static By CarRegistration = By.xpath(" // * [@ id =' carRegistrationNumber']");
只有在Jenkins中我才会收到此错误,一旦我收到此错误,其他测试用例也会失败。坚持这个问题将近2-3天。请帮忙!
提前致谢。
答案 0 :(得分:2)
我遇到的问题是由于窗口调整大小问题。当我通过driver.manage()。window()。maxim();最大化窗口时它总是扔错误。所以我改变了窗口大小,我面临的问题不再存在了。
Dimension d = new Dimension(1382,744);
//Resize the current window to the given dimension
driver.manage().window().setSize(d);
这是我将窗口大小设置为,它完全正常。不知道为什么詹金斯在最大化的窗口中找不到元素但这对我来说已经解决了。
答案 1 :(得分:0)
ID是定位元素的最佳选择。由于元素具有ID,您可以尝试使用ID,如下所示:
public static By carRegistration = By.id("carRegistrationNumber");
答案 2 :(得分:0)
如果您的Jenkins是从远程服务器托管的。请在服务器中检查一次调用测试运行时的自动化流程。 你能打印一下这个方法" waitForElement"定义以更清楚地说明等待是如何工作的。
使用相同的定位器 public static By CarRegistration = By.xpath(" // * [@ id =' carRegistrationNumber']") 尝试在第一个地方等待元素可点击。
WebDriverWait wait = new WebDriverWait(driver,60);
wait.until(ExpectedConditions.visibilityOf(CarRegistration ));