Selenium WebDriver C#,无法在文本框中输入值

时间:2016-07-08 11:18:35

标签: c# selenium

如何识别文本框并在文本框中放置值?

代码段

<div id="CTR_StartDate" class=" datePickerXtreme datePickerContainer datePickerXtreme datePickerContainer datePickerXtreme datePickerContainer">
    <input tabindex="0" name="ct100$CTR_StartDatectl00" value="Date" id="CTR_StartDate_ctl00" class="datePickerXtremeDateOnly   validField" type="text">
    <a tabindex="0" href="#" class="ui-datepicker-icon">&nbsp;</a>
    <input tabindex="0" value="Tuesday, 10 January 2017 00:00:00" name="ct100$CTR_StartDatectl01" id="CTR_StartDate_ctl01" type="hidden">
    <input tabindex="0" value="Tuesday, 10 January 2017 00:00:00" name="ct100$CTR_StartDatectl02" id="CTR_StartDate_ctl02" type="hidden">
    <span id="CTR_StartDate_ctl04" category="Common" style="color:Red;visibility:hidden;"></span>
    <input tabindex="0" name="ct100$CTR_StartDatectl03" id="CTR_StartDate_ctl03" value="GMT Standard Time" type="hidden">
</div>

以下是我用来放置文字的代码:

IWebElement ContractStartDate = driver.FindElement(By.Id("CTR_StartDate_ctl00"));
wait.Until(ExpectedConditions.ElementIsVisible(By.Id("CTR_StartDate_ctl00")));
ContractStartDate.SendKeys("14/07/2016");        

我用Name尝试过它,它仍然无法正常工作。它很少有效。那是非常罕见的。我试过点击文本框并使用发送键放置值,但仍然无法正常工作。有时会发生奇怪的例外

有人可以帮我这个吗?

2 个答案:

答案 0 :(得分:1)

你可以尝试使用Css选择器吗?

String selector = "div.datePickerXtreme input.datePickerXtremeDateOnly";
IWebElement ContractStartDate = driver.FindElement(By.CssSelector(selector));
ContractStartDate.Clear();
ContractStartDate.SendKeys("14/07/2016");

答案 1 :(得分:0)

可能是您的问题是您要首先找到元素,然后检查它的可见性,然后在已找到的.sendKeys()上使用element,这些ContractStartDate可能是可见的或未存储到IWebElement ContractStartDate = wait.Until(ExpectedConditions.ElementIsVisible(By.Id("CTR_StartDate_ctl00"))); ContractStartDate.Click(); ContractStartDate.SendKeys("14/07/2016"); { {1}}这就是为什么你的测试用例有时会通过并且有些时间失败的原因。请尝试以下方法: -

array_key_exists

希望它能奏效...... :)