Websdriver-sendKeys命令未在“密码类型”字段中键入



我正在尝试学习selenium网络驱动程序自动化,但我发现sendKeys命令没有在Password类型字段中键入。通过谷歌搜索,我可以看到其他一些人也遇到了同样的问题,但我还没有看到任何正确的答案。有人能在这里帮我吗。

请查看以下示例代码;我从SeleniumIDE生成了代码,它在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();
  }

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

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");

我在密码字段中遇到了几乎类似的情况。同一"密码"字段有两个元素,但ID不同。JavaScript在运行时切换"type=password"以点击、清除或对该字段执行任何操作。

这种情况下的解决方案是找到输入type = password、的文本

例如:

driver.FindElement(By.CssSelector("input[type='password']")).SendKeys(IWebElement);

我的问题是我使用了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
cvvTxtBox().sendKeys("1234"); 
cvvTxtBox().sendKeys(Keys.TAB);

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

最新更新