【问题标题】:clear text field using DELETE or BACK SPACE key in webdriver在 webdriver 中使用 DELETE 或 BACK SPACE 键清除文本字段
【发布时间】:2016-06-20 06:13:47
【问题描述】:

我正在尝试使用此操作清除文本字段:

emailField.sendKeys("gmail.com");
emailField.sendKeys(Keys.CONTROL,"a",Keys.DELETE);

在上面的代码中,最后一行只选择了文本,没有删除它,但是如果我分开操作它就起作用了。

emailField.sendKeys(Keys.CONTROL,"a");
emailField.sendKeys(Keys.DELETE);

【问题讨论】:

    标签: selenium-webdriver webdriver


    【解决方案1】:

    来自WebElement.clear() 的 JavaDoc:

    如果此元素是文本输入元素,则会清除该值。 对其他元素没有影响。文本输入元素是 INPUT 和 TEXTAREA 元素。请注意,此事件触发的事件可能不是 如您所料。特别是,我们不会触发任何键盘或鼠标 事件。如果要确保触发键盘事件,请考虑 使用带有 backspace 键的 sendKeys(CharSequence) 之类的东西。到 确保您收到更改事件,请考虑致电 sendKeys(CharSequence) 使用 Tab 键。

    您很可能只需要调用:

    emailField.sendKeys("gmail.com");
    emailField.clear();
    

    但如果您出于某种原因需要通过键盘进行清除,请使用Keys.BACKSPACE

    【讨论】:

    【解决方案2】:

    我在 javascript 中使用,它工作正常:

    await textBox.sendKeys(value);
    await textBox.sendKeys(Key.BACK_SPACE);
    

    【讨论】:

      【解决方案3】:
      emailField.sendKeys(Keys.BACKSPACE)
      

      对我不起作用。

      我使用“钥匙”而不是“钥匙”

      emailField.sendKeys(protractor.Key.BACKSPACE)
      

      【讨论】:

      • 你使用的Key类的包是什么
      • 我用过protractor.Key.BACKSPACE
      【解决方案4】:
      1. in WebdriverIO, i tried to edit the text by clear text (which contains special charactes like @, +, _) in text field by below following step. Eventhough it was not successful.
      
      example: text=> abc+1234@gmail.com
      
      step1:browser.clearElement(selector);
      
      step2:browser.execute(function () {
                  document.querySelector(>>>Cssselector<<<).value="";
              });
      
      step3: browser.doubleClick(selector);
             browser.keys("Delete");
      
      step4: browser.click(selector);
             browser.keys(['Meta',a]);  
             browser.keys('Meta');   
             browser.keys('Delete');
      
      Note: below step is resolved this issue.
      
      var count= browser.getAttribute(selector, value).length;
      for (var i=0;i<count;i++)
      {
      if (browser.getAttribute(selector, value)=='')
      break;
      }
      else
      {
      browser.doubleClick(selector);
      browser.keys("Delete");
      }
      browser.pause(200);
      

      // 它会轻松清除您的文本字段。

      注意: 您现在可以添加新文本了。

      【讨论】:

        【解决方案5】:

        在 chrome 驱动中测试

        WE.send_keys(' \b')
        

        这将添加空间然后删除它(退格)

        【讨论】:

          【解决方案6】:

          来自Keys.chord的JavaDoc

          和弦(java.lang.CharSequence...值) 模拟在“和弦”中同时按下多个键。

          你应该可以使用

          emailField.sendKeys(Keys.chord(Keys.CONTROL,"a",Keys.DELETE));
          

          【讨论】:

          • tks! -&gt;sendKeys(array(WebDriverKeys::CONTROL,'a',WebDriverKeys::DELETE))-&gt;sendKeys(array($title)
          【解决方案7】:

          keys.DELETE 不能删除输入的文本,你应该使用keys.BACKSPACE。

          emailField.sendKeys(Keys.BACKSPACE)
          

          【讨论】:

            猜你喜欢
            • 2014-11-16
            • 1970-01-01
            • 2013-01-16
            • 2013-08-27
            • 2023-01-16
            • 1970-01-01
            • 1970-01-01
            • 2021-01-09
            • 1970-01-01
            相关资源
            最近更新 更多