2016-06-23 8 views
0

最後の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要素が選択されます。つまり、リストから誤った要素を選択します。

これを行うにはどうすればよいですか。

+0

あなたがホバーを実行する場所ホバーイベントが働く場所を教えてもらえ –

+0

ちょうど生成されたHTML – user979189

+0

で質問を更新しました...最初にこのためのHTMLを共有してください 'ul'または' li'上の意味や'a' ...? –

答えて

0
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:nth-of-type(2)>li"))[0]; 
action.MoveToElement(advFiltersSec).Click().Build().Perform();