4

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

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

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

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

        }


        }

    }
4

3 回答 3

7

添加一行代码清除该<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.Clear();
element.SendKeys("W30PN");

参考

您可以在以下位置找到一些相关的讨论:

于 2018-07-11T11:09:24.593 回答
1

The clear command can be used to clear the element before entering any key in the text field

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

surround this statement with try catch in order to catch and handle any selenium related exception

于 2020-02-18T05:35:24.137 回答
0

在发送另一个密钥之前试试这个:

IWebElement textbox= driver.FindElement(By.XPath(".//input[@type = 'text']"));
textbox.SendKeys(OpenQA.Selenium.Keys.LeftShift + OpenQA.Selenium.Keys.Home)
于 2021-01-14T08:54:03.053 回答