如何改变输入值?

时间:2017-11-02 14:39:45

标签: javascript c# selenium

我自动测试网站,但我无法更新输入值。如果我更改了值,我尝试更新的值似乎没有在活动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();

2 个答案:

答案 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");