Selenium在文本框中输入无效文本(半文本)

时间:2016-07-25 11:56:14

标签: c# selenium selenium-webdriver nunit automated-tests

在运行多个测试用例时,selenium正在输入无效文本,如附件中所示。 以下是显示错误的两个示例:

  1. 不是输入AutomationTest123_6035633258972,而是输入6035633258972. Example1
  2. 而不是进入AutomationTest123_636010703068635512,它只是 进入utomationTest123_636010703068635512。 Example2
  3. 代码

       //StaticVariable is class which has static values
       var username = StaticVariable.username;
       var password = StaticVariable.password;
         driver.FindElement(By.Id("username")).SendKeys(username); //putting wrong values
         driver.FindElement(By.Id("password")).SendKeys(password); //putting wrong values
         driver.FindElement(By.Id("login")).Click();
    

    任何人都可以帮我这个吗?任何帮助都会受到赞赏。

4 个答案:

答案 0 :(得分:0)

使用clear方法,然后输入文字:driver.findElement(By.cssSelector("").clear();

这可能会有所帮助。

答案 1 :(得分:0)

首先要确保

var username = StaticVariable.username;

正在分配正确的值。 使用

print

分配后检查用户名的值。

尝试使用以下代码:

driver.FindElement(By.Id("username")).click()
driver.FindElement(By.Id("username")).clear()
driver.FindElement(By.Id("username")).SendKeys(username);

答案 2 :(得分:0)

我可以通过几个原因看出这可能是一个问题。我首先尝试清除文本输入并确保它具有焦点。

var username = StaticVariable.username;
var password = StaticVariable.password;
// Fill out user name
var userElem = driver.findElement(By.id("username"));
userElem.click();
userElem.clear();
userElem.sendKeys(userName);
// Fill out password
var passElem = driver.findElement(By.id("password"));
passElem.click();
passElem.clear();
passElem.sendKeys(password);
// Click login button
driver.findElement(By.id("login"))
      .click();

但是,如果没有解决这个问题,我会遇到这样的情况,即将字符串拆分并一次发送几个密钥就行了。 确实会对性能造成影响,所以除非你真的需要,否则我不会这样做。

public void fooTest() {
    // Do stuff to get to the correct page, etc
    var username = StaticVariable.username;
    var password = StaticVariable.password;
    // Fill out user name
    var userElem = driver.findElement(By.id("username"));
    sendKeys(userElem, userName);
    // Fill out password
    var passElem = driver.findElement(By.id("password"));
    sendKeys(passElem, password);
    // Click login button
    driver.findElement(By.id("login"))
          .click();
    // do assertions, etc
}

private void sendKeys(WebElement elem, String keys) {
    elem.click();
    elem.clear();
    for (int i = 0; i < keys.length(); i) {
        elem.sendKeys(keys.charAt(i));
    }
}

注意:抱歉语法/ c#错误,我几乎没用过这种语言......我对Java更熟悉了; - )

答案 3 :(得分:0)

而不是使用&#39; var&#39; ,您可能想尝试输入特定类型,例如&#39; string&#39;。问题必须在于传递给.SendKeys()或函数如何接收它。

string username = StaticVariable.username;
string password = StaticVariable.password;