如何在发送键硒C#前清除文本字段

时间:2018-07-11 11:06:39

标签: c# selenium selenium-webdriver

我正在编写一个简单的硒测试,该测试将发送不正确的字母字符串,然后提交并返回错误。然后,我想发送一个字母字符串,但是这次使用正确的字符串,以便可以接受。

我在测试中面临的问题是,第一组字符串已经在文本字段中,因此当我提交第二个字符串时,它将其添加到已经提交的第一个字符串上。

所以我本质上需要做的是发送第一个字母字符串,然后需要清除文本字段,然后发送第二个字母字符串。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Support.UI;
using OpenQA.Selenium.Interactions;
using System.Threading;

namespace Exercise1
{
    class RunPath
    {

            static void Main()
            {

                IWebDriver webDriver = new ChromeDriver();
                webDriver.Navigate().GoToUrl("https://energy.gocompare.com/gas-electricity");
                webDriver.Manage().Window.Maximize();


            String title = webDriver.Title;

            String expectedTitle = "Utilities from Go Compare";
            if (title.Contains(expectedTitle))
            {
                Console.WriteLine("Tile is matching with expected value");
            }
            else
            {
                Console.WriteLine("Tile is matching with expected value");
            }

            webDriver.FindElement(By.XPath(".//button[@type = 'submit']")).Click();

            webDriver.FindElement(By.XPath(".//input[@type = 'text']")).SendKeys("W30PN#");

            webDriver.FindElement(By.XPath(".//button[@type = 'submit']")).Click();


            // I need a piece of code here so that before i send the second string of keys the text field is clear 

            webDriver.FindElement(By.XPath(".//input[@type = 'text']")).SendKeys("W30PN");

            webDriver.FindElement(By.XPath(".//button[@type = 'submit']")).Click();


            // webDriver.Quit();

        }


        }

    }

3 个答案:

答案 0 :(得分:1)

添加一行代码以清除<input>字段,如下所示:

webDriver.FindElement(By.XPath(".//input[@type = 'text']")).Clear();
webDriver.FindElement(By.XPath(".//input[@type = 'text']")).SendKeys("W30PN");

理想情况下,在调用Navigate().GoToUrl()之后,就像在新页面上一样,您应该诱使 WebDriverWait 使<input> 元素可点击,您可以使用以下代码块:

IWebElement element = new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementToBeClickable(By.XPath(".//input[@type='text']")));
element.Click();
element.SendKeys("W30PN");

答案 1 :(得分:1)

clear命令可用于在文本字段中输入任何键之前清除元素

webDriver.FindElement(By.XPath("{Locator}")).Clear();
webDriver.FindElement(By.XPath("{Locator}")).SendKeys("{YOUR_KEY}");

用try catch包围该语句,以便捕获和处理任何与硒有关的异常

答案 2 :(得分:0)

在发送另一个密钥之前尝试此操作:

Future signInWithEmailAndPassword(String email, String password)
async {
  try{
AuthResult result= await _auth.signInWithEmailAndPassword(email: email.trim(), password: password.trim());
FirebaseUser user = result.user;
}catch(e){
print(e.toString());
return null;
}
}