Webdriver - sendKeys命令未在密码类型字段上键入

时间:2013-08-02 17:49:43

标签: selenium webdriver sendkeys

我正在尝试学习selenium webdriver自动化,但我发现sendKeys命令没有在密码类型字段上输入。我可以看到其他一些人也通过谷歌搜索遇到了同样的问题,但我还没有看到任何正确的答案。有人可以帮我这里。

请在下面找到示例代码;我从Selenium IDE生成代码,它在IDE上运行良好,但在我使用webdriver时没有。

package com.example.tests;

public class Login {
  private WebDriver driver;
  private String baseUrl;
  private boolean acceptNextAlert = true;
  private StringBuffer verificationErrors = new StringBuffer();

  @Before
  public void setUp() throws Exception {
    driver = new FirefoxDriver();
    baseUrl = "http://www.webs.com/";
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
  }

  @Test
  public void testLogin() throws Exception {
    driver.get(baseUrl + "/");
    driver.findElement(By.cssSelector("span")).click();
    driver.findElement(By.id("FWloginUsername")).clear();
    driver.findElement(By.id("FWloginUsername")).sendKeys("aug2qatestingqa@yahoo.com");
    driver.findElement(By.id("FWloginPassword2")).clear();
    driver.findElement(By.id("FWloginPassword2")).sendKeys("webs");
    driver.findElement(By.id("sign_in_leaf")).click();

  }

4 个答案:

答案 0 :(得分:0)

有两个密码字段,一个是隐藏的。解决方法是单击第一个密码[hidden]字段以启用第二个密码字段。

driver.findElement(By.id("FWloginUsername")).sendKeys("aug2qatestingqa@yahoo.com");
driver.findElement(By.id("FWloginPassword")).click();
driver.findElement(By.id("FWloginPassword2")).clear();
driver.findElement(By.id("FWloginPassword2")).sendKeys("webs");

答案 1 :(得分:0)

我的密码字段几乎有类似的情况。有两个相同的密码'密码'字段但具有不同的ID。 JavaScript正在切换" type = password"在运行时点击,清除或对该字段的任何操作。

在这种情况下,解决方案是找到带有输入public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Site", action = "Index", id = UrlParameter.Optional }, constraints: new { subdomain = new SubdomainRouteConstraint("www") }, namespaces: new string[] { "DeltaNorgeWebsite.Controllers" } ); routes.MapRoute( name: "Files", url: "{id}", defaults: new { controller = "File", action = "Index" }, constraints: new { subdomain = new SubdomainRouteConstraint("files") } ); #if DEBUG // redirect localhost routes.MapRoute( name: "LocalhostRedirect", url: "", defaults: new { controller = "Redirect", action = "Index", path = "http://www.delta-norge.com" }, constraints: new { subdomain = new SubdomainRouteConstraint("localhost") } ); #endif }

的文本

例如:

type = password

答案 2 :(得分:0)

我的问题是我使用ActionChains导致使用send_keys方法时无法填充后面的字段。

解决方案是致电actions.reset_actions()

例如

actions = ActionChains(driver)
actions.key_down(Keys.LEFT_CONTROL).send_keys("a").perform()
actions.key_down(Keys.LEFT_CONTROL).send_keys("c").perform()
actions.reset_actions()

# now send_keys() method works again

答案 3 :(得分:-3)

cvvTxtBox().sendKeys("1234"); 
cvvTxtBox().sendKeys(Keys.TAB);

关于这个问题的最终解决方案 否则使用机器人