我有以下程序:

using System;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Edge;

namespace ConsoleApplication1
{
    static class Program
    {
        static void Main()
        {
            //var driver = new ChromeDriver();
            var driver = new EdgeDriver();
            driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(20));
            driver.Navigate().GoToUrl("http://www.cornelsen.de/shop/registrieren-lehrer");
            driver.FindElement(By.Id("email")).SendKeys("[email protected]");
        }
    }
}

当我在 Chrome 或除 Edge 之外的任何其他浏览器中运行它时,电子邮件地址输入正确。但是如果我在 Edge 中尝试同样的事情,“@”字符就会丢失。该字段仅显示“dummyuser.de”。

知道我能做什么吗?

最佳答案

作为解决方法,您可以直接通过 input 设置 ExecuteScript() 值:

IWebElement email = driver.FindElement(By.Id("email"));

IJavaScriptExecutor js = driver as IJavaScriptExecutor;
string script = "arguments[0].setAttribute('value', 'arguments[1]');";
js.ExecuteScript(script, email, "[email protected]");

或者,您可以做的是创建一个具有等于电子邮件地址的预定义值的假输入元素。选择此输入中的文本,复制并粘贴到目标输入中。

不漂亮,但只能作为一种解决方法:
// create element
IJavaScriptExecutor js = driver as IJavaScriptExecutor;
string script = @"
    var el = document.createElement('input');
    el.type = 'text';
    el.value = 'arguments[0]';
    el.id = 'mycustominput';
    document.body.appendChild(el);
";
js.ExecuteScript(script, "[email protected]");

// locate the input, select and copy
IWebElement myCustomInput = driver.FindElement(By.Id("mycustominput"));
el.SendKeys(Keys.Control + "a");  // select
el.SendKeys(Keys.Control + "c");  // copy

// locate the target input and paste
IWebElement email = driver.FindElement(By.Id("email"));
email.SendKeys(Keys.Control + "v");  // paste

关于c# - 如何使用 Selenium WebDriver 在 Edge 的文本输入字段中输入电子邮件地址?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35342869/

10-16 05:45