C# 如何创建一个方法来执行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

由于IE的原因,每当我执行sendkeys时,我都必须执行foreach循环以输入元素的每个字符,如下所示:

    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);
    }