2

C# で Selenium webdriver を使用して、ドロップダウン メニューからテキストを選択しようとしています。Chrome ブラウザでは完全に動作しますが、Firefox では動作しません。誰でもこれを修正するのを手伝ってくれませんか。

私が使用しているコードを以下に示します。

public void SelectCountry1(string country)
{
var countryDropDown = Driver.FindElement(By.XPath(xpathidofthecountrydropdown));
countryDropDown .Click();
//Driver.FindElement(By.XPath(xpathidofthecountrydropdown)).Click;
var selectElement = new SelectElement(countryDropDown);
selectElement.SelectByText(country);
}

この関数を呼び出すことができ、これはエラー メッセージなしで正常に実行されています。予想されるキーワードが存在するにもかかわらず、選択できません。

現在、同じIDを2回クリックするという回避策があり、コードが機能します。コメント付きのセクションはコメント解除されていますが、それが正しい回避策だとは思いません。これについてのあなたの考えを教えてください。

ありがとう

4

2 に答える 2

0

ええ、Firefox ではうまく動作しません。jQueryを使用した回避策としてこれを使用する必要がありました。ページに jQuery がない場合は、通常の JavaScript でこのコードを自由に変更してください。

public static void SetDropdownSelectedOptionByText(IWebDriver driver, string tagId, string newText, int sleepTime)
{
    // not working when selecting client id of certain types of ASP.NET user controls
    //new SelectElement(driver.FindElement(By.Id(tagId))).SelectByText(newText);  

    IJavaScriptExecutor js = driver as IJavaScriptExecutor;
    js.ExecuteScript("$('#" + tagId + " option:contains(" + Element.NonNullValue(newText) + ")').attr('selected', 'selected')");
    js.ExecuteScript("$('#" + tagId + "').change()");
    System.Threading.Thread.Sleep(sleepTime);  // wait for dependent dropdown to load its values
}
于 2012-08-07T06:56:14.407 に答える
0

通常、選択クラスは、ドロップダウンをクリックしなくても選択を処理します。FF と Chrome の両方で動作するはずです。つまり、Select には他にも問題があります。ドロップダウン ボタンは一切クリックしないようにしてください。Select クラスが機能しない場合は、オプションをクリックしてナビゲートし、キーを上下に送信してから Enter キーを押します。

于 2012-08-03T22:23:52.817 に答える