7

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: Cannot locate element with text: Featured downloads

4

2 に答える 2

10

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);
        }
    }
于 2012-04-16T01:14:56.050 に答える
0

単純なHTMLページで問題を再現できる場合は、必ずバグレポートを送信する必要があります。

ソースコード を見ると、SelectByText最初にこれが行われます。

FindElements(By.XPath(".//option[normalize-space(.) = " + EscapeQuotes(text) + "]"))

何も見つからない場合は、次のようにします。

string substringWithoutSpace = GetLongestSubstringWithoutSpace(text);
FindElements(By.XPath(".//option[contains(., " + EscapeQuotes(substringWithoutSpace) + ")]"))

したがって、理論的には機能するはずです。XPathを自分で試して、自分のケースでXPathを機能させることができるかどうかを確認することもできます。

于 2012-04-13T16:16:29.883 に答える