Quel est le problème avec le ci-dessous selenuim 2/webdriver test?

J'ai du mal à l'automatisation d'un simple JSF page de connexion qui prend 4 entrées (code client, code du système, utilisateur et mot de passe) et prend en de la page d'administration. Le test ci-dessous est de se comporter différemment avec chacun des pilotes et tous d'entre eux sont infructueuses. J'ai regardé le code html à partir du navigateur (voir la source) et je vois que tous les éléments de type sont présents, avec une bonne id.

Mise à JOUR

J'ai été en mesure de rendre le code fonctionne correctement avec Firefox avec le ci-dessous le changement (de la soumission du formulaire en faisant explicitement cliquant sur le bouton plutôt que de se soumettre, il forme). Mais d'autres pilotes font preuve de la même erreur, le comportement décrit.

driver.findElement(By.className("af_commandButton")).click();

Code

import junit.framework.Assert;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class LoginPage
{
public static void main(final String[] args)
{
//WebDriver driver = new InternetExplorerDriver();
//WebDriver driver = new HtmlUnitDriver();
WebDriver driver = new ChromeDriver();
//WebDriver driver = new FirefoxDriver();
try
{
driver.get("http://domain:port/coco/webapp/login/login.faces");
driver.findElement(By.id("clientCode")).sendKeys("coco");
driver.findElement(By.id("systemCode")).sendKeys("consumer");
driver.findElement(By.id("userId")).sendKeys("ffadmin");
driver.findElement(By.id("password")).sendKeys("password1");
driver.findElement(By.id("LoginloginForm")).submit();
//driver.findElement(By.id("login")).click();
Assert.assertTrue(driver.getPageSource().contains("Administration"));
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
driver.quit();
}
}
}

Chrome

Incorrectement rempli les informations comme indiqué ci-dessous

Quel est le problème avec le ci-dessous selenuim 2/webdriver test?

Internet Explorer

org.openqa.selenium.NoSuchElementException: Unable to find element with id == clientCode (WARNING: The server did not pr
ovide any stacktrace information)
System info: os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.6.0_24'
Driver info: driver.version: RemoteWebDriver
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:131)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:105)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:409)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:192)
at org.openqa.selenium.remote.RemoteWebDriver.findElementById(RemoteWebDriver.java:209)
at org.openqa.selenium.By$1.findElement(By.java:66)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:184)
at LoginPage.main(LoginPage.java:22)

FireFox

Remplit les informations correctement, comme indiqué ci-dessous, mais rien ne se passe lorsque le formulaire est soumis, avec le posté code et j'obtiens le montre exception

Quel est le problème avec le ci-dessous selenuim 2/webdriver test?

Exception in thread "main" junit.framework.AssertionFailedError: null
at junit.framework.Assert.fail(Assert.java:47)
at junit.framework.Assert.assertTrue(Assert.java:20)
at junit.framework.Assert.assertTrue(Assert.java:27)
at LoginPage.main(LoginPage.java:30)

HtmlUnitDriver

org.openqa.selenium.WebDriverException: Cannot locate element used to submit form
System info: os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.6.0_24'
Driver info: driver.version: unknown
at org.openqa.selenium.htmlunit.HtmlUnitWebElement.submitForm(HtmlUnitWebElement.java:155)
at org.openqa.selenium.htmlunit.HtmlUnitWebElement.submit(HtmlUnitWebElement.java:108)
at LoginPage.main(LoginPage.java:27)

HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html dir="ltr" lang="en-US">
<head>
<meta name="generator" content=
"HTML Tidy for Windows (vers 14 February 2006), see www.w3.org">
<meta name="generator" content="Apache Trinidad">
<link rel="stylesheet" charset="UTF-8" type="text/css" href=
"/coco/webapp/adf/styles/cache/interconnect-zcl0st-en-ltr-webkit.css">
<script type="text/javascript">
var _AdfWindowOpenError='A popup window blocker has been detected in your browser. Popup blockers interfere with the operation of this application. Please disable your popup blocker or allow popups from this site.';
</script>
<script type="text/javascript" src=
"/coco/webapp/adf/jsLibs/Common1_0_8.js">
</script>
<script type="text/javascript">
_defaultTZ()
</script>
<link rel="stylesheet" href="../skins/interconnect/trinidad-components.css"
type="text/css">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript" src="../Assets/jquery-1.3.2.min.js" type=
"text/javascript">
</script>
<script language="JavaScript" src="../Assets/vsFunctions.js" type=
"text/javascript">
</script>
<script language="JavaScript" src="../Assets/ic-script.js" type=
"text/javascript">
</script>
<script language="JavaScript" src="../Assets/timezone.js" type=
"text/javascript">
</script><!--[if lte IE 6]>     
<link rel="stylesheet" type="text/css" href="../Assets/ie6fixes.css" />   
<script language="JavaScript" src="../Assets/ie6-script.js"></script>   
<![endif]--><!--[if IE 7]>     
<link rel="stylesheet" type="text/css" href="../Assets/ie7fixes.css" />  
<script language="JavaScript" src="../Assets/ie7-script.js"></script>
<![endif]-->
<script type="text/javascript" language="JavaScript">
function disableButton(inputButton)
{
inputButton.disabled=true;              
}
</script>
<title></title>
</head><!-- this is a placehold for application version-->
<body onload=
"return _chain('_checkLoad()','readTimeZoneOffset()',this,event)" onunload=
"_checkUnload(event)">
<a name="top" id="top"></a><noscript>This page uses JavaScript and requires
a JavaScript enabled browser.Your browser is not JavaScript
enabled.</noscript>
<div class="main-header">
<div id="header:header-branding" class="header-branding">
<div id="header:clientbrand" class="client-brand">
<img id="header:client-image" name="header:client-image" src=
"/coco/webapp/skins/interconnect/client-logo.gif">
</div>
</div>
<form id="header:_id5" name="header:_id5" style="margin:0px" method=
"post" onkeypress="return _submitOnEnter(event,'header:_id5');" action=
"/coco/webapp/login/login.faces">
<div id="header:basebar" class="basebar">
<div id="header:finish-right-bar" class="finish-right-bar">
<ul class="navbar navBarHelp"></ul>
</div>
</div><input type="hidden" name=
"org.apache.myfaces.trinidad.faces.FORM" value="header:_id5"><span id=
"tr_header:_id5_Postscript"><input type="hidden" name=
"org.apache.myfaces.trinidad.faces.STATE" value=
"!24835796"><script type="text/javascript">
function _header__id5Validator(f,s){return true;}
</script></span><script type="text/javascript">
_submitFormCheck();
</script>
</form>
<div class="rule"></div>
</div>
<div class="main-menu">
<div class="rule"></div>
</div>
<div id="content" class="compact content split-lines">
<div class="content">
<div class="locale">
<form id="localeChanger" name="localeChanger" class="spacingDisplay"
style="margin:0px" method="post" onkeypress=
"return _submitOnEnter(event,'localeChanger');" action=
"/coco/webapp/login/login.faces">
<div class="locale-links">
<a href="#" onclick=
"submitForm('localeChanger',1,{source:'changeLocale_en'});return false;"
id="changeLocale_en" title="English version" name=
"changeLocale_en"><img id="flagUSA" src=
"/coco/webapp/Images/upgrade/flag_english.jpg" alt=
"English version" border="0" name="flagUSA"></a><a href="#"
onclick=
"submitForm('localeChanger',1,{source:'changeLocale_es'});return false;"
id="changeLocale_es" title="Spanish version" name=
"changeLocale_es"><img id="flagSPAIN" src=
"/coco/webapp/Images/upgrade/flag_spanish.jpg" alt=
"Spanish version" border="0" name="flagSPAIN"></a><a href="#"
onclick=
"submitForm('localeChanger',1,{source:'changeLocale_fr'});return false;"
id="changeLocale_fr" title="French version" name=
"changeLocale_fr"><img id="flagFRANCE" src=
"/coco/webapp/Images/upgrade/flag_french.jpg" alt=
"French version" border="0" name="flagFRANCE"></a><a href="#"
onclick=
"submitForm('localeChanger',1,{source:'changeLocale_pt'});return false;"
id="changeLocale_pt" title="Portuguese version" name=
"changeLocale_pt"><img id="flagBRASIL" src=
"/coco/webapp/Images/upgrade/flag_portuguese.jpg" alt=
"Portuguese version" border="0" name="flagBRASIL"></a>
</div><input type="hidden" name=
"org.apache.myfaces.trinidad.faces.FORM" value=
"localeChanger"><span id="tr_localeChanger_Postscript"><input type=
"hidden" name="org.apache.myfaces.trinidad.faces.STATE" value=
"!24835796"><script type="text/javascript">
function _localeChangerValidator(f,s){return true;}
</script></span><script type="text/javascript">
_submitFormCheck();
</script>
</form>
</div>
<form id="LoginloginForm" name="LoginloginForm" class="spacingDisplay"
style="margin:0px" method="post" onkeypress=
"return _submitOnEnter(event,'LoginloginForm','login');" action=
"/coco/webapp/login/login.faces">
<h1 class="pageTitle">
User Authentication
</h1>
<div class="wizard">
<div class="section">
<div class="content">
<div class="input">
<div class="field">
<span class="label"><label for="clientCode">Client
Code</label></span>
<div class="content">
<script type="text/javascript">
var _locale='en-US';var _tLocale='en-US';
</script><script type="text/javascript" src=
"/coco/webapp/adf/jsLibs/resources/LocaleElements_en_US1_0_8.js?loc=en_US">
</script><span class="af_inputText p_AFRequired"><input id="clientCode"
name="clientCode" class="af_inputText_content" size="30"
maxlength="20" type="text"></span>
</div>
</div>
<div class="field">
<span class="label"><label for="systemCode">System
Code</label></span>
<div class="content">
<span class="af_inputText p_AFRequired"><input id=
"systemCode" name="systemCode" class=
"af_inputText_content" size="30" maxlength="20" type=
"text"></span>
</div>
</div>
<div class="field">
<span class="label"><label for="userId">User
Id</label></span>
<div class="content">
<span class="af_inputText p_AFRequired"><input id=
"userId" name="userId" class="af_inputText_content" size=
"30" maxlength="20" type="text"></span>
</div>
</div>
<div class="field">
<span class="label"><label for=
"password">Password</label></span>
<div class="content">
<span class="af_inputText p_AFRequired"><input id=
"password" name="password" onkeydown=
"return _clearPassword(this, event);" class=
"af_inputText_content" size="30" maxlength="20" type=
"password"></span>
</div>
</div>
</div><img class="wizard-graphic" src=
"../Images/upgrade/safe_box.jpg">
<div class="section">
<button id="login" name="login" type="button" onclick=
"submitForm('LoginloginForm',1,{source:'login'});return false;"
class="action af_commandButton">Log In</button><button id=
"forgotPassword" name="forgotPassword" type="button" class=
"action af_goButton" onclick=
"document.location='../forgotpassword/ForgotPassword.faces'">Password
Help</button>
</div>
</div>
</div>
</div>
<div class="legalNoticeLogin">
<div class="section">
<div class="content">
<div id="legalCopy" class="copy">
<div class="xcopy af_outputDocument">
<p class="af_outputDocument_paragraph">
<b>IMPORTANT - READ CAREFULLY</b>
</p>
<p class="af_outputDocument_paragraph">
The private Web site you are about to enter
</p>
</div>
</div>
</div>
</div>
</div><input type="hidden" name=
"org.apache.myfaces.trinidad.faces.FORM" value=
"LoginloginForm"><span id="tr_LoginloginForm_Postscript"><input type=
"hidden" name="org.apache.myfaces.trinidad.faces.STATE" value=
"!24835796"><script type="text/javascript">
function _LoginloginFormValidator(f,s){return true;}
</script></span><script type="text/javascript">
_submitFormCheck();
</script>
</form>
</div>
</div>
</body>
</html>
  • pouvez-vous nous montrer le html il est en train de travailler contre
  • pourrait-il être que peut-être il y a plusieurs éléments avec le même id, sur votre page?
  • Koopmans - ajouté le code html généré
  • Aucune l'id ne sont pas dupliqués...j'ai ajouté le code html de la question maintenant