У меня есть веб-страница в моем веб-проекте «CalculatorWeb», где я разместил одно текстовое поле с идентификатором «txtNum1».
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body>
<form id="frmCalc">
<div style="padding-top:20px;">
My Sample Text Box <br/><br/>
<input id="txtNum1" type="text" />
</div>
</form>
</body>
</html>
Ничего необычного, поэтому страница загружается, как показано ниже.
Теперь я создал файл функций «BrowserTest1.feature» для своего проекта «Calculator.Specs». Код следующим образом
Feature: BrowserTest1
In order to check url
As browser
I want to be see url of page
@mytag
Scenario: Go to URL
Given I have entered 'http://localhost:58529/'
When I go to that url
Then there is a text box on the page with id 'txtNum1'
Затем я кодирую файл BrowserTest.cs для реализации модульных тестов.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Support.UI;
using TechTalk.SpecFlow;
namespace Calculator.Specs
{
[Binding]
class BrowserTest
{
public string urlPath;
[Given(@"I have entered 'http://localhost:58529/'")]
protected void SetURL()
{
string URLPath = "http://localhost:58529/";
urlPath = URLPath;
}
[When(@"I go to that url")]
protected void NavigateToURL()
{
using (var driver = new ChromeDriver())
{
driver.Navigate().GoToUrl(urlPath);
}
}
[Then(@"there is a text box on the page with id 'txtNum1'")]
protected void TxtBoxExists()
{
bool txtExists = false;
using (var driver = new ChromeDriver())
{
IWebElement txtBox1 = driver.FindElement(By.Id("txtNum1"));
if (txtBox1 != null)
{
txtExists = true;
}
}
Assert.AreEqual(true, txtExists);
}
}
}
Насколько мне известно, у меня есть все необходимые ссылки для Visual Studio IDE для интеграции SpecFlow/Selenium.
Когда я запускаю модульный тест, веб-страница загружается нормально, однако я получаю неудачный тест, когда пытаюсь найти элемент с идентификатором «txtNum1», даже если текстовое поле с этим идентификатором существует на странице.
Сведения об исключении отображаются следующим образом.
Может ли кто-нибудь указать мне правильное направление относительно того, что мне не хватает, чтобы позволить Selenium найти текстовое поле на странице с идентификатором «txtNum1»
driver
делиться между шагами? - person Konrad Kokosa   schedule 04.11.2014