这是我的html,我正在尝试找到输入字段“j_username”,有没有人有解决方案,谢谢。
<head>
<body>
<!-- Google Tag Manager -->
<noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM- WS3MQZ" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<script> ..... </script>
<!-- End Google Tag Manager -->
<div id="pagetoplinks"/>
<div id="sesMenuFrame">
<!-- <html> <head> -->
<script type="text/javascript"> ..... </script>
<div id="loginframe">
<div id="loginTitle">
<div id="EmptyField" class="ui-widget" style="display: none">
<form id="LoginVal" action="/oam/server/auth_cred_submit" method="post" onsubmit="return validateForm('LoginVal')">
<div id="loginmain" class="bluetable">
<div id="j_usernameFormFieldDiv" class="formfield">
<div class="labelArea label ">
<span class="requiredSpacer"/>
<div class="fieldarea">
<input id="j_username" type="text" autocomplete="off" value="" size="" name="username"/>
</div>
</div>
我尝试了以下内容,它找到了iframe,但没有找到j_username的id。
driver.switchTo().frame( driver.findElement( By.tagName( "iframe" ) ) );
driver.findElement( By.id( "j_username" ) ).clear();
driver.findElement( By.id( "j_username" ) ).sendKeys( strUserName );
也尝试了这一点,两者都返回了NoSuchElementException。
driver.findElement( By.xpath( "//input[@id='j_username']" ) );
driver.findElement( By.xpath( "//html/body/div[3]/form/div[1]/div[1]/div[2]/input" ) );
想要查看问题所在,在第一行的表单前找到div标签,在为第二行添加时找不到表单。
driver.findElement( By.xpath( "//html/body/div[3]" ) ); // Finds it - just before form
driver.findElement( By.xpath( "//html/body/div[3]/form" ) ); // NoSuchElementException - for form
尝试返回表单元素,无法通过id找到它。
WebElement form = driver.findElement( By.id( "LoginVal" ) ); // NoSuchElementException - id of form
form.findElement( By.id( "j_username" ) );
尝试返回表单元素,按标记名查找表单,但在j_username
上失败WebElement form = driver.findElement( By.tagName( "form" ) ); // Finds it - form
form.findElement( By.id( "j_username" ) ); // NoSuchElementException - for input