【问题标题】:Is there any other way(not sendKeys) to enter text into textbox using selenium webdriver?有没有其他方法(不是 sendKeys)使用 selenium webdriver 将文本输入文本框?
【发布时间】:2022-03-12 11:08:05
【问题描述】:

有没有其他方法(不是 sendKeys)使用 selenium webdriver 将文本输入文本框?

【问题讨论】:

  • 为什么会有另一种方式? sendKeys 有什么问题? API 设计者很少提供 5 种方法来做同样的事情。
  • 一位面试官问了这个问题...

标签: java selenium-webdriver


【解决方案1】:

其他方式只能使用原生Javascript动作在文本框中输入值:

WebDriver driver = new FirefoxDriver();

JavascriptExecutor executor = (JavascriptExecutor)driver;

executor.executeScript("document.getElementById("textbox_id").value='new value';);

【讨论】:

  • 我收到这样的错误...线程“主”org.openqa.selenium.WebDriverException 中的异常:document.getElementById(...) 为空 命令持续时间或超时:31 毫秒。你能告诉我解决办法吗?
  • 您使用的是哪个版本的 firefox 和 webdriver?
  • Firefox 版本为 33.1,webdriver 版本为 2.44.0
【解决方案2】:

@Vasntha,试试我的测试代码

driver.get("http://www.qajudge.com/");
WebElement cssValue= driver.findElement(By.xpath(".//*[@id='s']"));
JavascriptExecutor jse = (JavascriptExecutor) driver;
jse.executeScript("document.getElementById('s').value='Virender Testing   
sending'");

【讨论】:

    【解决方案3】:
    WebElement name=driver.findElement(By.name("username"));
    ((JavascriptExecutor)driver).executeAsyncScript("arguments[0].value='admin'",name); 
    

    【讨论】:

    • 欢迎来到堆栈溢出 :-) 纯代码答案对社区没有用处。请看How to Answer
    【解决方案4】:

    尝试以下一个,我在 Gmail 中尝试过,它可以工作

        System.setProperty("webdriver.chrome.driver", "you .exe path here");
        WebDriver driver = new ChromeDriver();
        driver.get("https://accounts.google.com/");
        driver.manage().window().maximize();
        Thread.sleep(1000);
        //Next button element
        WebElement nextBtn = driver.findElement(By.id("identifierNext"));
        JavascriptExecutor js = (JavascriptExecutor)driver;
        //code to enter value in the email textbox
        js.executeScript("document.getElementById('identifierId').value='testemail'");
        //code to click on next button
        js.executeScript("arguments[0].click();", nextBtn);
    

    【讨论】:

      【解决方案5】:

      是的,使用 javascript 执行器。在这里,我编写了一个使用 XPath 来捕获元素的代码。

          WebElement webelement = driver.findElement(By.xpath("your xpath");
          JavascriptExecutor js = (JavascriptExecutor) driver;
          js.executeScript("arguments[0].value='Techndeck';",webelement );
      

      【讨论】:

        【解决方案6】:

        使用 javascriptexecutor 输入文本 如何使用 Javascriptexecutor 在元素中输入文本,我想在不通过 SendKeys 输入的文本框中输入文本。我继续使用 Javascriptexecutor 输入文本 Example 2. Get/Retrieve text with JavascriptExecutor。在此示例中,我们正在访问一个网站并尝试使用 JavascriptExecutor 检索登录按钮上写入的文本

        如何使用 JavascriptExecutor 发送文本和获取文本?, 所以在这种情况下,我们使用 Selenium WebDriver 库的 JavascriptExecutor 来处理 好吧,让我们从使用发送文本数据到文本区域开始 如果您仍有任何困惑,请在下面的评论中写下。 这是在 Selenium WebDriver 中使用 JavascriptExecutor 发送文本的另一种技术。这是示例代码:ADA。

        WebElement webl = driver.findElement(By.xpath(“xpath_expression”));JavascriptExecutor js = (JavascriptExecutor)driver;js.executeScript(“arguments[0].value=’SynTest’;”, webl);

        1.如何在 Selenium WebDriver 中使用 JavaScript 输入文本, 以下是可用于使用 javascript 输入文本的命令。你不需要总是使用 sendkeys。 句法: JavascriptExecutor jexe 要在通过 xpath 标识的文本框中输入文本,您可以使用以下符号:

        (JavascriptExecutor) driver.executeScript("document.evaluate(xpathExpresion, document, null, 9, null).singleNodeValue.innerHTML="+ DesiredText);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-12-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多