我自动测试网站,但我无法更新输入值。如果我更改了值,我尝试更新的值似乎没有在活动DOM中更新,这导致我提交后没有任何反应。
我甚至尝试过检查元素并手动更改了值,但它仍然无法正常工作。
IJavaScriptExecutor jse = (IJavaScriptExecutor)driver;
jse.ExecuteScript(
"document.getElementById('ScheduleTime').setAttribute('value','2020-01-01 00:00')"
);
driver.FindElement(By.XPath("//button[contains(text(),'Submit')]")).Click();
答案 0 :(得分:4)
使用原生JS,可以使用value
更改element.value
:
IJavaScriptExecutor jse = (IJavaScriptExecutor)driver;
jse.ExecuteScript("document.getElementById('ScheduleTime').value='2020-01-01 00:00'");
试一试。
还要确保未禁用input
元素。
答案 1 :(得分:2)
首先,不要使用JSE设置值。没有用户会这样做,这可能是导致你出现问题的原因。使用JSE设置值还可以处理输入的任何事件或JS处理,这将使您的输入跳过错误检查,自动格式化等。
Selenium有一个内置的处理方法,.sendKeys()
。我不知道你使用的语言,但下面是一个Java示例。所有语言绑定都应具有相应的功能,并将在官方文档中进行记录。我建议你在那里查看它们并使用它们代替JSE。
driver.findElement(By.id("ScheduleTime")).sendKeys("2020-01-01 00:00");