Java 在selenium webdriver中找不到元素(用户名和密码)
我似乎无法理解这一点。我尝试过使用xpath、cssselector和executeScript,但没有成功。我正在尝试访问用户名和密码,但我的代码找不到它 我是webdriver和jquery的新手 我尝试过的事情的子集。所有这些都可以定位“登录”,但不能定位用户名或密码Java 在selenium webdriver中找不到元素(用户名和密码),java,selenium,webdriver,selenium-webdriver,Java,Selenium,Webdriver,Selenium Webdriver,我似乎无法理解这一点。我尝试过使用xpath、cssselector和executeScript,但没有成功。我正在尝试访问用户名和密码,但我的代码找不到它 我是webdriver和jquery的新手 我尝试过的事情的子集。所有这些都可以定位“登录”,但不能定位用户名或密码 WebElement username = driver.findElement("username') WebElement username = driver.findElement(By.xpath("//div[@c
WebElement username = driver.findElement("username')
WebElement username = driver.findElement(By.xpath("//div[@class='forms']//descendant::input[@name='username']"));
js.executeScript("$('div.input').get(0)");
我在xpath、cssselector中尝试了几个正则表达式
<div class="forms">
<form name="formLogin" method="post" action="">
<div>Please sign in:</div>
<div style="height:5px"> </div>
<ul>
<li class="nameField">
<div>
<input class="hint_color" type="text" style="display: none;" value="" tabindex="1">
<input id="username" type="text" tabindex="1" title="USER.NAME" value="username" name="username" autocomplete="off">
</div>
<div style="height:5px;"> </div>
<div>
</li>
<li class="pwdField">
<div>
<input class="hint_color" type="text" style="display: none;" value="" tabindex="2">
<input id="username" type="password" title="PASSWORD" tabindex="2" value="password" name="username" autocomplete="off">
</div>
<div style="height:5px"> </div>
<div>
<div style="height:5px"> </div>
<a href="">Forgot Username/Password</a>
</div>
</li>
<li class="submitField">
<input id="login" type="submit" value="Log In" name="login">
</li>
</ul>
</form>
请登录:
-
-
-
您的帮助将不胜感激。要方便了解定位器、定位器类型以及如何以不同方式选择同一定位器,您应该首先使用或(firefox插件)
记录所需事件,使用目标下拉列表下的可用方式更改定位器。这将帮助您找到准确的定位器。我希望通过这种方式,您可以找出您缺少的内容。在HTML代码中,您有两个标记id=username和两个标记name=username。这是错误的,webdriver无法区分这些元素 因此,如果可以,请更改这些id(id=username//id=password),但如果无法更改, 使用Selenium IDE记录脚本并尝试使用XPATH查找这些元素 对不起,我的英语。这是什么? 对于这两个字段(用户名和密码),元素
id
和name
仅为username
。如果这是错误的,您可以尝试以下命令:
WebElement username = driver.findElement(By.id("username"));
无论您想执行什么操作,都可以执行以下操作:
username.click();
或
用户名和密码元素本身没有用于区分它们的属性,因为它们具有相同的id和相同的类。这是糟糕的html编码;但即便如此,也可以解决这个问题,因为
li
元素具有不同的类nameField
和pwdield
。最简洁有效的方法是使用CSS选择器:
li.nameField输入#用户名
li.pwdField输入#用户名
使用这些定位器,webdriver代码为:
WebElement username=driver.findElement(By.cssSelector(“li.nameField input#username”);
WebElement password=driver.findElement(By.cssSelector(“li.pwdField input#username”);
或者,如果愿意,可以使用XPath等价物:
//li[@class='nameField']//输入[@id='username']
.//li[@class='pwdField']//输入[@id='username']
另外,所有在firefox中使用的定位器都经过验证。您所写的方式是错误的
WebElement username = driver.findElement("username')
与其这样,不如尝试以下方法:
WebElement username = driver.findElement(By.cssSelector(".nameField>div>input[id='username']"));
username.sendKeys("abcdefg");
您可以为“用户名”
定位器编写多个css选择器。
完成xpath或CssSelector
后,请使用FirePath
交叉检查定位器。请将xpath更改为
Option:1 //div[@class='forms']//descendant::input[@value='username']
Option 2: //input[@value='username']
您的HTML似乎未关闭,并且在中未关闭middle@girlfacs,您能告诉我您收到了什么错误消息吗?这是在IFrame中吗?谢谢您的回复。谢谢您的回复。这有助于感谢您的回复。已尝试使用.id(“用户名”),但也不起作用。已检查IDE,但在webdriver中使用的语法/格式不起作用。谢谢你的回复
Option:1 //div[@class='forms']//descendant::input[@value='username']
Option 2: //input[@value='username']