如何使用 Selenium C# 将数值发送到输入标签
How to send numerical values to an input tag using Selenium C#
我知道这可能是一个重复的问题,但我尝试了各种方法来解决这个问题,但无法解决问题
HTML 从网站复制的代码
<input name="ctl00$TabContainer1$tpMain$ContentPlaceHolder1$Ins$txtDob" type="text" value="(dd/mm/yyyy)" maxlength="10" id="ctl00_TabContainer1_tpMain_ContentPlaceHolder1_Ins_txtDob" onselect="javascript:if(this.value=='(dd/mm/yyyy)') this.value='';this.style.color='';" onblur="javascript:InputValidation(this,'Date','Date of Birth','(dd/mm/yyyy)');" onclick="javascript:if(this.value=='(dd/mm/yyyy)') this.value='';this.style.color='';" onkeydown="return autodate(this)" onchange="javascript:CheckChanges();" onkeypress="return onlyNumbersWithForwardslash();" style="width:90%;" tabindex="0">
我的代码是这样的
string dob = startDate.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture);
string[] array = dob.Split(new string[] { "/" }, StringSplitOptions.RemoveEmptyEntries);
char[] Chararray = string.Join(string.Empty, array).ToCharArray();
IWebElement DobElement = driver.FindElement(By.XPath("//*[@id='ctl00_TabContainer1_tpMain_ContentPlaceHolder1_Ins_txtDob']")); // .Id("ctl00_TabContainer1_tpMain_ContentPlaceHolder1_Ins_txtDob"));
DobElement.Clear();
foreach (char s in Chararray)
{
int num = Int32.Parse(s.ToString());
DobElement.SendKeys(""+num);
}
感谢任何帮助输入数字到文本框的人
由于所需的元素是 JavaScript 启用的元素,您需要引入 WebDriverWait 以使所需的 元素可点击 您可以使用以下任一解决方案:
CssSelector:
IWebElement DobElement = driver.FindElement(By.CssSelector("input[id$='_Ins_txtDob'][name$='txtDob'][onblur*='InputValidation')]"));
DobElement.Click();
DobElement.Clear();
XPath:
IWebElement DobElement = driver.FindElement(By.XPath("//input[contains(@id, '_Ins_txtDob') and contains(@name, 'txtDob')][contains(@onblur, 'InputValidation')]"));
DobElement.Click();
DobElement.Clear();
我知道这可能是一个重复的问题,但我尝试了各种方法来解决这个问题,但无法解决问题
HTML 从网站复制的代码
<input name="ctl00$TabContainer1$tpMain$ContentPlaceHolder1$Ins$txtDob" type="text" value="(dd/mm/yyyy)" maxlength="10" id="ctl00_TabContainer1_tpMain_ContentPlaceHolder1_Ins_txtDob" onselect="javascript:if(this.value=='(dd/mm/yyyy)') this.value='';this.style.color='';" onblur="javascript:InputValidation(this,'Date','Date of Birth','(dd/mm/yyyy)');" onclick="javascript:if(this.value=='(dd/mm/yyyy)') this.value='';this.style.color='';" onkeydown="return autodate(this)" onchange="javascript:CheckChanges();" onkeypress="return onlyNumbersWithForwardslash();" style="width:90%;" tabindex="0">
我的代码是这样的
string dob = startDate.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture);
string[] array = dob.Split(new string[] { "/" }, StringSplitOptions.RemoveEmptyEntries);
char[] Chararray = string.Join(string.Empty, array).ToCharArray();
IWebElement DobElement = driver.FindElement(By.XPath("//*[@id='ctl00_TabContainer1_tpMain_ContentPlaceHolder1_Ins_txtDob']")); // .Id("ctl00_TabContainer1_tpMain_ContentPlaceHolder1_Ins_txtDob"));
DobElement.Clear();
foreach (char s in Chararray)
{
int num = Int32.Parse(s.ToString());
DobElement.SendKeys(""+num);
}
感谢任何帮助输入数字到文本框的人
由于所需的元素是 JavaScript 启用的元素,您需要引入 WebDriverWait 以使所需的 元素可点击 您可以使用以下任一解决方案:
CssSelector:
IWebElement DobElement = driver.FindElement(By.CssSelector("input[id$='_Ins_txtDob'][name$='txtDob'][onblur*='InputValidation')]")); DobElement.Click(); DobElement.Clear();
XPath:
IWebElement DobElement = driver.FindElement(By.XPath("//input[contains(@id, '_Ins_txtDob') and contains(@name, 'txtDob')][contains(@onblur, 'InputValidation')]")); DobElement.Click(); DobElement.Clear();