Selenium - SendKeys(“@”)写一个“à”

时间:2017-09-07 14:08:15

标签: c# .net selenium selenium-webdriver

我开始使用Selenium来测试我的网站,但是当我在Internet Explorer上测试它时,函数SendKeys(“@”)写“à”而不是“@”。

否则,它在Chrome和FF上运行良好。

如果你有答案........... :)

这是我的代码:

        IWebElement loginInput = driver.FindElement(By.Id("login-inputEl"));
        loginInput.SendKeys("test@test.fr");

泰!

4 个答案:

答案 0 :(得分:1)

试试这个

loginInput.SendKeys(System.Net.WebUtility.HtmlDecode("test@test.fr"));

答案 1 :(得分:1)

我得到了解决方案,以便在IE驱动程序中用selenium写一个“@”! 使用法语键盘,您需要按下图形键“ALT GR”和键“à”以获得“@”,然后,您需要告诉Selenium执行相同的操作。

loginInput.SendKeys("test"); // the beginning of my email adress
var actions = new OpenQA.Selenium.Interactions.Actions(driver);
actions.KeyDown(Keys.Control).KeyDown(Keys.LeftAlt); // I press my graph key "ALT GR"
actions.SendKeys("à"); // Then, my key "@"
actions.KeyUp(Keys.Control).KeyUp(Keys.LeftAlt); // I release my key
actions.Build().Perform(); // execute
loginInput.SendKeys("test.fr"); // the end of my email adress

答案 2 :(得分:0)

在遇到同样问题的几天之后,我找到了一个实用的解决方案,它允许我们输入一个包含@的电子邮件地址,没有麻烦。

  

str email =" username@domain.com" ;;   Driver.Instance.FindElement(By.Name("用户名&#34))的SendKeys(电子邮件);

这应该可以解决问题。我试图输入电子邮件作为var,并且总是输入 @ 符号作为 q (我有西班牙语lat kb)并且很好... str做得很好工作。

我希望您可以将此提示用于您的测试!

答案 3 :(得分:0)

在 Java 中,我解决了将输入字符串转换为字符列表并将其与特殊字符进行比较的问题。

static String charsSpecial = "@#[]€";

我的方法是这样的。

public static void insertValueExplorer(WebDriver driver, WebDriverWait mywait, String locator, String variable) {
        mywait.until(ExpectedConditions.elementToBeClickable(By.xpath(locator))).clear();   
        if(driver.toString().contains("InternetExplorerDriver")){
            List<Character> chars = Utils.convertStringToCharList(variable);
            int j=0;
            while(j<chars.size())
            { 
                if (charsSpecial.contains(chars.get(j).toString())){
                
                    mywait.until(ExpectedConditions.elementToBeClickable(By.xpath(locator))).sendKeys(Keys.chord(Keys.CONTROL, Keys.ALT, chars.get(j).toString())); 
                }else{
                    mywait.until(ExpectedConditions.elementToBeClickable(By.xpath(locator))).sendKeys(chars.get(j).toString()); 
                }
                j=j+1;
            }
        }else {
            mywait.until(ExpectedConditions.elementToBeClickable(By.xpath(locator))).sendKeys(variable);    
        }
    }

我在所有浏览器上执行我的测试,但此方法仅适用于 Explorer