我正在尝试在文本字段中输入字符,但是它不起作用。下面我提到了2条代码。 JS根本不工作。如在第一段代码中所示,单击有效,但其他步骤无效。 Xpath是正确的,因为单击正在处理该问题。
util.driver.findElement(By.xpath("//input[@id='input-1']")).click();
util.driver.findElement(By.xpath("//input[@id='input-1']")).clear();
util.driver.findElement(By.xpath("//input[@id='input-1']")).sendKeys("hjgfjg");
JavascriptExecutor js = (JavascriptExecutor) util.driver;
js.executeScript("document.getElementByXpath('//input[@id='input-1']').value = 'TEST')");
答案 0 :(得分:1)
所需元素是动态元素,因此要对该元素调用sendKeys()
,必须为elementToBeClickable()
引入 WebDriverWait ,并且可以使用以下{{ 3}}:
cssSelector
:
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input.slds-input[id^='input-'][aria-describedby^='help-message-']"))).sendKeys("hjgfjg");
xpath
:
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@class='slds-input' and starts-with(@id, 'input-')][starts-with(@aria-describedby, 'help-message-')]"))).sendKeys("hjgfjg");
答案 1 :(得分:0)
尝试使用Actions
:
WebElement input = util.driver.findElement(By.xpath("//input[@id='input-1']"));
Actions action = new Actions(util.driver);
action.moveToElement(input).click().sendKeys("test").build().perform();
正在导入:
import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.Actions;
答案 2 :(得分:0)
可能您可以尝试以下解决方法:
spatie/laravel-server-side-rendering