最後の2日間から、私は自分のasp.netウェブサイトの統合テストを書くために最善の方法を見つけることに努力しています。Selenium with Telerik RadMenu
私はこのようなものであるTelerik RadMenu使用しています - それが動作
Root Menu
- Menu 1
- Sub Menu 1.1
- Sub Menu 1.2
- Menu 2
- Sub Menu 2.1
- Menu 3
- Sub Menu 3.1
- Sub Menu 3.2
- Sub Menu 3.3
方法がある - ユーザーがMenu
開きRoot menu
の上に置くと、それはSub Menu
を開き、それをクリックすると、Telerik]ダイアログボックスが表示されますホバーを使用。
私は2つのホバーとこのようになりますクリックして実行するにはいくつかの方法を試みた -
方法1:方法2
Actions action = new Actions(Browser.Driver);
IWebElement we = Browser.Driver.FindElement(By.XPath("//*[@id='ctl00_ContentPlaceHolder1_RadMenu1']"));
action.MoveToElement(we).MoveToElement(we.FindElement(By.XPath("ul/li/div/ul/li[1]"))).Build().Perform();
action.MoveToElement(we.FindElement(By.XPath("ul/li/div/ul/li[1]/div/ul/li[1]"))).Click().Build().Perform();
を:
var advFilter = Browser.Driver.FindElement(By.Id("ctl00_ContentPlaceHolder1_RadMenu1"));
Actions action = new Actions(Browser.Driver);
var advFiltersPrimary = Browser.Driver.FindElements(By.CssSelector(".rmLevel1>li"))[0];
action.MoveToElement(advFilter).MoveToElement(advFiltersPrimary).Build().Perform();
var advFiltersSec = Browser.Driver.FindElements(By.CssSelector(".rmLevel2>li"))[0];
action.MoveToElement(advFiltersSec).Click().Build().Perform();
生成されたHTMLがどのように見えますこの -
<div id="ctl00_ContentPlaceHolder1_RadMenu1" class="RadMenu RadMenu_Default " style="z-index: 7000;">
<ul class="rmHorizontal rmRootGroup">
<li class="rmItem rmFirst rmLast" style="z-index: 0;"><a href="#" class="rmLink Menulevel1" id="advMenu" style="color:White;background-color:#7F5EBA;" tabindex="-1"><img alt="" src="../../images/icons/addFilters.gif" class="rmLeftImage"><span class="rmText rmExpandDown">Root Menu</span></a><div class="rmSlide" style="visibility: visible; height: 301px; width: 260px; display: none; overflow: hidden; left: 0px; top: -301px; z-index: 2;">
<ul class="rmVertical rmGroup rmLevel1" style="width: 258px; display: block; top: 301px; left: 0px; visibility: visible;">
<li class="rmItem rmFirst" style="z-index: 0;"><a href="#" class="rmLink " style="color: rgb(51, 51, 51); border-color: rgb(195, 195, 195); width: 254px; background-color: white;" tabindex="-1"><span class="rmText rmExpandRight">Menu 1</span></a><div class="rmSlide" style="visibility: visible; height: 210px; width: 214px; display: none; overflow: hidden; left: 258px; top: 0px; z-index: 16;">
<ul class="rmVertical rmGroup rmLevel2" style="display: block; width: 212px; top: 0px; left: -214px; visibility: visible;">
<li class="rmItem rmFirst"><a href="#" class="rmLink " style="color: rgb(51, 51, 51); border-color: rgb(195, 195, 195); width: 208px; background-color: rgb(240, 240, 240);" tabindex="-1"><span class="rmText ">Sub Menu 1.1</span></a></li><li class="rmItem"><a href="#" class="rmLink " style="color: rgb(51, 51, 51); border-color: rgb(195, 195, 195); text-decoration: none; width: 208px; background-color: rgb(240, 240, 240);" tabindex="-1"><span class="rmText ">Sub Menu 1.2</span></a></li>
</ul>
</div></li><li class="rmItem" style="z-index: 0;"><a href="#" class="rmLink " style="color: rgb(51, 51, 51); border-color: rgb(195, 195, 195); width: 254px; background-color: white;" tabindex="-1"><span class="rmText rmExpandRight">Menu 2</span></a><div class="rmSlide" style="visibility: visible; height: 279px; width: 225px; display: none; overflow: hidden; left: 258px; top: 0px; z-index: 16;">
<ul class="rmVertical rmGroup rmLevel2" style="width: 223px; display: block; top: 0px; left: -225px; visibility: visible;">
<li class="rmItem rmFirst"><a href="#" class="rmLink " style="color: rgb(51, 51, 51); border-color: rgb(195, 195, 195); width: 219px; background-color: rgb(240, 240, 240);" tabindex="-1"><span class="rmText ">Sub Menu 2.1</span></a></li>
</ul>
</div></li><li class="rmItem" style="z-index: 0;"><a href="#" class="rmLink " style="color: rgb(51, 51, 51); border-color: rgb(195, 195, 195); width: 254px; background-color: white;" tabindex="-1"><span class="rmText rmExpandRight">Menu 3</span></a><div class="rmSlide" style="visibility: visible; height: 233px; width: 271px; display: none; overflow: hidden; left: 258px; top: -40px; z-index: 16;">
<ul class="rmVertical rmGroup rmLevel2" style="display: block; width: 269px; top: 0px; left: -271px; visibility: visible;">
<li class="rmItem rmFirst"><a href="#" class="rmLink " style="color: rgb(51, 51, 51); border-color: rgb(195, 195, 195); width: 265px; background-color: rgb(240, 240, 240);" tabindex="-1"><span class="rmText ">Sub Menu 3.1</span></a></li><li class="rmItem"><a href="#" class="rmLink " style="color: rgb(51, 51, 51); border-color: rgb(195, 195, 195); width: 265px; background-color: rgb(240, 240, 240);" tabindex="-1"><span class="rmText ">Sub Menu 3.2</span></a></li><li class="rmItem"><a href="#" class="rmLink " style="color: rgb(51, 51, 51); border-color: rgb(195, 195, 195); width: 265px; background-color: rgb(240, 240, 240);" tabindex="-1"><span class="rmText ">Sub Menu 3.3</span></a></li>
</ul>
</div></li>
</ul>
</div></li>
</ul>
</div>
2番目の方法では、rmLevel1とrmLevel2のcssクラスを使用しています。これは、telerikがMenu
の場合はrmLevel1をul
に割り当て、Sub Menu
の場合はrmLevel2クラスをul
に割り当てているためです。
方法1はときどきしか動作しません(ほとんどの場合、レベルホバーのSub Menu
で失敗します)。方法2では、第1要素を指定しても第2要素が選択されます。つまり、リストから誤った要素を選択します。
これを行うにはどうすればよいですか。
あなたがホバーを実行する場所ホバーイベントが働く場所を教えてもらえ –
ちょうど生成されたHTML – user979189
で質問を更新しました...最初にこのためのHTMLを共有してください 'ul'または' li'上の意味や'a' ...? –