我需要向textArea元素發送字串型別的大文本。我使用
driver.findElement(By.xpath(textarea_xpath)).sendKeys(fileText)。
但是它太慢了。有什么想法可以讓它變得更快?
uj5u.com熱心網友回復:
你可以用JS執行器試試:
public void enterTextJS(By locator, String text) {
JavascriptExecutor jsExecutor = (JavascriptExecutor) driver;
WebElement element = driver.findElement(locator);
jsExecutor.executScript("arguments[0].value='" text "';", element);
}
uj5u.com熱心網友回復:
基本與Villa_7的解決方案相同。 設定6k字符的文本需要~25毫秒。
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.executScript(js)。
System.out.println(LocalDateTime.now())。
System.out.println(addressField.getAttribute("value"/span>))。
driver.quit()。
}
public static String randomStringOfLength(int length) {
int leftLimit = 48; // numeral '0'
int rightLimit = 122; //字母'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;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/326828.html
標籤:
