首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何高效地向java selenium textarea元素发送大字符串

如何高效地向java selenium textarea元素发送大字符串
EN

Stack Overflow用户
提问于 2021-09-19 21:34:40
回答 2查看 170关注 0票数 0

我需要将字符串类型中的大文本发送到textArea元素。我使用

代码语言:javascript
代码运行次数:0
运行
复制
driver.findElement(By.xpath(textarea_xpath)).sendKeys(fileText);

但是它太慢了。有什么办法能让这一切变得更快?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-09-20 09:51:03

您可以使用JS executor进行尝试:

代码语言:javascript
代码运行次数:0
运行
复制
  public void enterTextJS(By locator, String text) {
    JavascriptExecutor jsExecutor = (JavascriptExecutor) driver;
    WebElement element = driver.findElement(locator);
    jsExecutor.executeScript("arguments[0].value='" + text + "';", element);
  }
票数 1
EN

Stack Overflow用户

发布于 2021-09-21 06:04:47

基本上与Villa_7的解决方案相同。设置6k字符的文本需要大约25毫秒。

代码语言:javascript
代码运行次数:0
运行
复制
package selenium;

import java.time.LocalDateTime;
import java.util.Random;

import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;

public class OmarHafez extends WebDriverSetup {

    public static void main(String[] args) {

        WebDriver driver = startChromeDriver();
        driver.get("https://demoqa.com/automation-practice-form");
        WebElement addressField = driver.findElement(By.tagName("textarea"));
        addressField.click();
        String s = randomStringOfLength(6000);
        System.out.println(LocalDateTime.now());
        String js = "document.evaluate(\"//textarea[@id='currentAddress']\", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.value = '" + s + "';";
        JavascriptExecutor javascriptExecutor = (JavascriptExecutor)driver;
        javascriptExecutor.executeScript(js);
        System.out.println(LocalDateTime.now());
        System.out.println(addressField.getAttribute("value"));
        driver.quit();
    }
    
    public static String randomStringOfLength(int length) {
        int leftLimit = 48; // numeral '0'
        int rightLimit = 122; // letter 'z'
        Random random = new Random();
        String generatedString = random.ints(leftLimit, rightLimit + 1)
          .filter(i -> (i <= 57 || i >= 65) && (i <= 90 || i >= 97))
          .limit(length)
          .collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append)
          .toString();
        return generatedString;
    }

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69247244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档