我扩展了Selenium命名空间。但它仍然无法识别GetXpathCount()函数。有谁知道解决方案?谢谢!
int count = Selenium.GetXpathCount("ctl00_ContentPlaceHolder1_TVNCategoryGridView");
我收到以下错误消息:
名称空间'Selenium'中不存在类型或命名空间名称'GetXPathCount'(您是否缺少程序集引用?)
以下是整个代码结构:
using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Selenium;
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium.Support.UI;
using System.Threading;
using NUnit.Framework;
.......(test class extending base test)
public void TestSetup()
{
Driver = CreateDriverInstance(BaseUrl);
Driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5));
Driver.SwitchTo().Window(Driver.CurrentWindowHandle);
}
[TestCleanup()]
public void TestCleanup()
{
Driver.Quit();
}
[Priority(1), TestMethod]
public void NewShowTest()
{
Open("~/NewShow.aspx");
Random rnd = new Random(DateTime.Now.Second);
string shownum = DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString() + " " + rnd.Next(0, 10000).ToString();
testShowName = "Test Show " + shownum;
int count = Selenium.GetXpathCount("ctl00_ContentPlaceHolder1_TVNCategoryGridView");
..........
}
答案 0 :(得分:1)
您似乎正在使用Selenium WebDriver和Selenium RC的混合。
我相信这是因为在这里,你正在创建一个新的驱动程序(WebDriver API):
Driver = CreateDriverInstance(BaseUrl);
然后在这里,您正在使用RC API(Selenium
类是RC API的一部分):
int count = Selenium.GetXpathCount("ctl00_ContentPlaceHolder1_TVNCategoryGridView");
您还有OpenQA.Selenium
和Selenium
的使用指令。这也是你正在做的另一个迹象非常非常错误。
三件事:
GetXPathCount
方法也不是静态方法,这就是您收到原始错误的原因。建议:
推荐:由于您使用的是C#,因此您可以使用LINQ to Objects的强大功能,并模仿完全 GetXPathCount 的功能。通过这个:
Driver.FindElement(By.XPath("//*[@id='ctl00_ContentPlaceHolder1_TVNCategoryGridView']")).Count;
虽然如果这只是一个ID,你可以简单地做到:
Driver.FindElement(By.Id("ctl00_ContentPlaceHolder1_TVNCategoryGridView")).Count;
或强>
根本不推荐:选择使用RC API并使用DefaultSelenium
类正确实例化Selenium
类:
ISelenium selenium = new DefaultSelenium("localhost", 4444, "*chrome", "http://www.google.com");
selenium.Start();
int amountOfElementsMatchingXPath = selenium.GetXpathCount("//*[@id='ctl00_ContentPlaceHolder1_TVNCategoryGridView']");
selenium.Stop();
或
也不推荐:选择使用WebDriverBackedSelenium API,它将为您提供旧的RC API,同时允许您使用WebDriver支持。
var webDriverBackedSelenium = new WebDriverBackedSelenium(Driver, "http://www.google.com");
int amountOfElementsMatchingXPath = webDriverBackedSelenium.GetXpathCount("//*[@id='ctl00_ContentPlaceHolder1_TVNCategoryGridView']");
另一个观察结果:
您已经包含了 NUnit和MSTest(NUnit.Framework
和Microsoft.VisualStudio.TestTools.UnitTesting
)的使用,但您似乎正在使用MSTest。
如果您坚持使用MSTest,请删除您的NUnit引用,这只会增加混乱,增加编译时间并构建不必要的引用。