我正在编写一个简单的硒测试,该测试将发送不正确的字母字符串,然后提交并返回错误。然后,我想发送一个字母字符串,但是这次使用正确的字符串,以便可以接受。
我在测试中面临的问题是,第一组字符串已经在文本字段中,因此当我提交第二个字符串时,它将其添加到已经提交的第一个字符串上。
所以我本质上需要做的是发送第一个字母字符串,然后需要清除文本字段,然后发送第二个字母字符串。
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();
}
}
}
答案 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;
}
}