Java 在selenium webdriver中找不到元素(用户名和密码)

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

我似乎无法理解这一点。我尝试过使用xpath、cssselector和executeScript,但没有成功。我正在尝试访问用户名和密码,但我的代码找不到它

我是webdriver和jquery的新手

我尝试过的事情的子集。所有这些都可以定位“登录”,但不能定位用户名或密码

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']