我在C#中使用Selenium WebDriver Extensions通过部分文本值从选择列表中选择一个值(实际前面有一个空格).我无法使用部分文本匹配来使其工作.我做错了什么或这是一个错误?
可重复的例子:
using Microsoft.VisualStudio.TestTools.UnitTesting; using OpenQA.Selenium; using OpenQA.Selenium.Firefox; using OpenQA.Selenium.Support.UI; namespace AutomatedTests { [TestClass] public class UnitTest1 { [TestMethod] public void TestMethod1() { var driver = new FirefoxDriver(); driver.Navigate().GoToUrl("http://code.google.com/p/selenium/downloads/list"); var selectList = new SelectElement(driver.FindElement(By.Id("can"))); selectList.SelectByText("Featured downloads"); Assert.AreEqual(" Featured downloads",selectList.SelectedOption.Text); selectList.SelectByValue("4"); Assert.AreEqual("Deprecated downloads",selectList.SelectedOption.Text); driver.Quit(); } } }
提供错误:
OpenQA.Selenium.NoSuchElementException:找不到包含文本的元素:精选下载
解决方法
SelectByText方法已被破坏,因此我编写了自己的名为SelectBySubText的扩展方法来执行它的目的.
using System.Linq; using OpenQA.Selenium; using OpenQA.Selenium.Support.UI; namespace AutomatedTests.Extensions { public static class WebElementExtensions { public static void SelectBySubText(this SelectElement me,string subText) { foreach (var option in me.Options.Where(option => option.Text.Contains(subText))) { option.Click(); return; } me.SelectByText(subText); } }