Java 无法清除文本区域,该区域使用Selenium WebDriver在清除和模糊时自动输入文本
我使用的是使用Java的SeleniumWebDriver。 我有一个文本区,我想清除默认内容并在其中输入新内容。功能是这样的,若我从文本区域清除文本并点击Tab按钮,那个么默认文本将自动填充。 下面是textarea的HTML:Java 无法清除文本区域,该区域使用Selenium WebDriver在清除和模糊时自动输入文本,java,selenium-webdriver,xpath,css-selectors,webdriverwait,Java,Selenium Webdriver,Xpath,Css Selectors,Webdriverwait,我使用的是使用Java的SeleniumWebDriver。 我有一个文本区,我想清除默认内容并在其中输入新内容。功能是这样的,若我从文本区域清除文本并点击Tab按钮,那个么默认文本将自动填充。 下面是textarea的HTML: 让我们以折扣码出价吧! 我尝试使用: driver.findElement(By.id("CheckoutWelcomeTitle")).clear 但这不起作用。 我也试过: driver.findElement(By.id("CheckoutWelcomeTi
让我们以折扣码出价吧!
我尝试使用:
driver.findElement(By.id("CheckoutWelcomeTitle")).clear
但这不起作用。
我也试过:
driver.findElement(By.id("CheckoutWelcomeTitle")).sendKeys(Keys.CONTROL + "a")
driver.findElement(By.id("CheckoutWelcomeTitle")).sendKeys(Keys.DELETE)
这有时有效,但并不总是有效。有时它会清除数据并重新填充默认文本
是否有其他方法可以清除此文本区域,使其每次都能正常工作
若有帮助的话,开发人员已经使用JavaScript在模糊事件中重新填充文本框
编辑:我使用了显式等待,条件是元素可以单击。使用Java脚本执行器,它应该可以工作
JavascriptExecutor executor = (JavascriptExecutor) driver;
executor.executeScript("document.getElementById('CheckoutWelcomeTitle').value=''");
所需元素是一个动态元素,因此要定位该元素,您必须引导WebDriverWait以使该元素可单击,并且您可以使用以下任一选项:
:css选择器
WebElement myElement = new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("textarea.form-control.rd-control.rd-control--textarea.empty#CheckoutWelcomeTitle"))); myElement.click(); myElement.clear();
:xpath
WebElement myElement = new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//textarea[@class='form-control rd-control rd-control--textarea empty' and @id='CheckoutWelcomeTitle']"))); myElement.click(); myElement.clear();