如何使用Selenium Web Driver获取按钮元素

时间:2017-09-26 07:46:36

标签: java selenium selenium-webdriver

我正在java中编写一个selenium代码,它将插入用户名和密码,并使用chrome登录网站:

WebElement query = driver.findElement(By.id("usernameInput"));
    query.sendKeys("****");
    WebElement query2 = driver.findElement(By.id("passwordInput"));
    query2.sendKeys("****");
    Thread.sleep(1500);

    WebElement query3 = driver.findElement(By.className(btn z-btn-default  pull-right));
    query3.click();

我无法点击登录按钮。 我使用按钮的inspect元素来搜索id或其他要使用但没有成功的东西。 我正在从inspect元素中添加一个截图

enter image description here

5 个答案:

答案 0 :(得分:0)

使用这个希望它会帮助你

WebElement query = driver.findElement(By.id("usernameInput"));
query.sendKeys("****");
WebElement query2 = driver.findElement(By.id("passwordInput"));
query2.sendKeys("****");
Thread.sleep(1500);
WebElement query3 = driver.findElement(By.xpath(".//*[@class='btn z-btn-default  pull-right']"));
query3.click();

答案 1 :(得分:0)

selenium类名一次只能使用一个类名。尝试使用css选择器或xpath,如下所示。

WebElement query3 = driver.findElement(By.cssSelector(".btn.z-btn-default.pull-right"));

WebElement query3 = driver.findElement(By.xpath("//*[@class='btn z-btn-default  pull-right']"));

答案 2 :(得分:0)

使用xpath中的其他值

//input[@type='Submit'][@value='LOGIN']

代码:

WebElement query3 = driver.findElement(By.xpath("//input[@type='Submit'][@value='LOGIN']"));
query3.click();

答案 3 :(得分:0)

您无法点击该按钮,因为它似乎已被停用,查看您提供的HTML。

<input type="submit" disabled="disabled" ...>

我认为你需要找出在什么情况下启用提交按钮,并相应地编写你的硒测试。

此外,如果您无法通过其属性唯一标识此提交按钮,则selenium会提供submit()方法来提交表单,如下所示:

webelement.submit();

请参阅this页面上的文档。

... HTH

答案 4 :(得分:0)

请尝试以下任何代码。

html开始,您的LOGIN按钮位于<input>标记内。因此,xpath应该从<input>代码开始。

driver.findElement(By.xpath("//input[@value='LOGIN'][@type='submit']")).click();

xpath的说明: - 使用<input>标记以及valuetype属性启动xpath。

注意: - 而不是使用absolute xpath使用Relative xpath

  

OR

您可以使用LOGIN方法点击JavaScript Executor按钮。

WebElement login_button = driver.findElement(By.xpath("//input[@value='LOGIN'][@type='submit']"));
((JavascriptExecutor) driver).executeScript("arguments[0].click();", login_button);