【问题标题】:Selenium: How to enter white space as the value of a text field?Selenium:如何输入空格作为文本字段的值?
【发布时间】:2011-02-24 06:14:53
【问题描述】:

我有一个使用默认值填充的表单文本字段。我想清除该值并输入空格以断言发生了预期的验证。我正在使用 Selenium RC 和 PHPUnit Selenium 扩展。我怎样才能做到这一点?

注意:我已经尝试过这样做,但它们不起作用:

$this->type('FirstName', "  "); //spaces
$this->type('FirstName', "\t"); //tab character

他们从字段中清除值,但他们不将空格输入到字段中。

更新:我发现 if you are using Selenium IDE, you can type white space by using their ${space} variable 但这在使用 Selenium RC 和 PHPUnit Selenium 扩展时不起作用。

【问题讨论】:

    标签: selenium phpunit selenium-rc


    【解决方案1】:

    这应该适用于带有 Selenium 的 phpunit:

    class MyTest extends PHPUnit_Extensions_Selenium2TestCase
    {
        public function testSomething()
        {
            $textField = $this->byCssSelector('.blah');
    
            // ...
    
            $textField->clear();
            $textField->value(" ");
    
            // test assertion to follow
        }
    }
    

    如果你想输入一个句子,下面的就不行了:

    $textField->value("this is a sentence.");
    

    以下将:

    $textField->value("this");
    $textField->value(" ");
    $textField->value("is");
    $textField->value(" ");
    $textField->value("a");
    $textField->value(" ");
    $textField->value("sentence.");
    

    【讨论】:

      【解决方案2】:

      我在 github 上的 phpunit-selenium 代码中修复了这个问题,并向维护者提出了拉取请求。

      如果有人关心,这是我的要点:

      https://github.com/undernewmanagement/phpunit-selenium/commit/1b783ba8cfe4736f525b316a75a991e0a701afd1

      【讨论】:

        【解决方案3】:

        你可以试试selenium.typeKeys('FirstName'," "); 请让我知道它是否有效。

        【讨论】:

          【解决方案4】:

          最近我遇到了和 Andrew 一样的问题,其中 ${space} 在 Selenium RC 中不起作用。我发现 Zugwalt 的解决方案很有用。这是我为捕获空白所做的操作。

          selenium.focus("txt_textbox1");
          selenium.keyPressNative("32");
          strOutput = selenium.getEval("this.browserbot.findElement('txt_textbox1').value = ' ';");
          

          希望对您有所帮助;)

          谢谢@!

          【讨论】:

          • .keyPressNative("32");使用它会放入空间,然后如果您想删除它,您也可以执行 .keyPressNative("8");。我这样做的目的是在文本框中使用过滤器刷新 jquery 数据表,非常感谢。
          【解决方案5】:

          您可以使用 javascript 注入并直接操作该值

          selenium.getEval("this.browserbot.findElement('FirstName').value = ' ';");
          

          请注意,这不会触发任何事件,因此如果需要,您必须手动触发它们。

          【讨论】:

            【解决方案6】:

            使用 keyPress() 函数“按下”空格键怎么样?

            【讨论】:

              【解决方案7】:

              将其值设置为空字符串 ('') 怎么样?

              【讨论】:

              • 设置元素值的语法是什么?
              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2016-03-09
              • 1970-01-01
              • 1970-01-01
              • 2013-10-08
              相关资源
              最近更新 更多