C# 如何创建一个方法来执行foreach循环中的发送每个字符
由于IE的原因,每当我执行sendkeys时,我都必须执行foreach循环以输入元素的每个字符,如下所示:C# 如何创建一个方法来执行foreach循环中的发送每个字符,c#,internet-explorer,selenium-webdriver,C#,Internet Explorer,Selenium Webdriver,由于IE的原因,每当我执行sendkeys时,我都必须执行foreach循环以输入元素的每个字符,如下所示: public void CompleteOtherContactDetails() { var firstName = _driver.FindElement(PaymentDetailsResponsiveElements.OtherFirstNameField); var lastName = _driver.FindElement
public void CompleteOtherContactDetails()
{
var firstName = _driver.FindElement(PaymentDetailsResponsiveElements.OtherFirstNameField);
var lastName = _driver.FindElement(PaymentDetailsResponsiveElements.OtherLastNameField);
var firstNameText = _characterGenerator.RandomStringGenerator(8);
var lasstNameText = _characterGenerator.RandomStringGenerator(8);
foreach (char c in firstNameText)
firstName.SendKeys(c.ToString());
foreach (char c in lasstNameText)
lastName.SendKeys(c.ToString());
}
我仍在学习c#,但我想问,有没有一种方法,你能告诉我是否可以编写一个方法,这样我就不必继续编写foreach循环来输入文本,而是可以调用该方法
谢谢我不太清楚这里的大背景,但要给你一个简单的使用方法,请尝试以下方法:
public void FillField(string fieldValue, WhateverTypeYourFieldHas field)
{
var element=_driver.FindElement(field);
foreach(char c in fieldValue)
{
element.SendKeys(c.ToString());
}
}
你可以这样使用它
public void FillEmailAddressField(string emailAddress)
{
FillField(emailAddress, PaymentDetailsResponsiveElements.EmailAddressField);
}
更改以下代码:
public void FillEmailAddressField(string emailAddress)
{
var email = _driver.FindElement(PaymentDetailsResponsiveElements.EmailAddressField);
var emailText = emailAddress;
foreach (char c in emailText)
{
email.SendKeys(c.ToString());
}
}
比如:
我想你在用硒。Selenium函数SendKeys可以发送完整的字符串而不是字符。这说明了如何使用ExecuteScript方法。问题是IE,在IE中,当以正常方式使用send keys时,它实际上会漏掉文本。因此,如果我在Chrome中输入ABCDEFG,它可以工作,但IE可能会在Chrome中输入ABDEGIn,因此,代码很好。webdriver中可能有问题。哪个版本的WebDriver和WebDriver。支持使用?WebDriver 3.6.0和3.6.0。什么是Internet Explorer版本?IE11和IEWebdriver也是3.6
public void FillEmailAddressField(string emailAddress)
{
FillField(emailAddress, PaymentDetailsResponsiveElements.EmailAddressField);
}
public void FillEmailAddressField(string emailAddress)
{
var email = _driver.FindElement(PaymentDetailsResponsiveElements.EmailAddressField);
var emailText = emailAddress;
foreach (char c in emailText)
{
email.SendKeys(c.ToString());
}
}
public void FillEmailAddressField(string emailAddress)
{
var email = _driver.FindElement(PaymentDetailsResponsiveElements.EmailAddressField);
email.SendKeys(emailAddress);
}