Java 无法清除文本区域,该区域使用Selenium WebDriver在清除和模糊时自动输入文本

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

我使用的是使用Java的SeleniumWebDriver。 我有一个文本区,我想清除默认内容并在其中输入新内容。功能是这样的,若我从文本区域清除文本并点击Tab按钮,那个么默认文本将自动填充。 下面是textarea的HTML:

让我们以折扣码出价吧!
我尝试使用:

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();
    

如果文本区域未清除,您是否会收到任何异常?或者您的代码会覆盖默认内容?如果页面正在加载,您始终需要等待,f.e.to元素是可单击的,请参阅org.openqa.selenium.support.ui.ExpectedConditions