2012-01-20 12 views
0

私のページには2つの要素があります(2つの 'キャンセル'要素)。Seleniumを使ってExtJSの要素をクリックするには?

<div unselectable="on" class="x-grid-cell-inner x-unselectable" style="text-align: left; " id="ext-gen1179"> 
Cancel 
</div> 

<div unselectable="on" class="x-grid-cell-inner x-unselectable" style="text-align: left; " id="ext-gen2951"> 
Cancel 
</div> 

2番目の要素をクリックするにはどうすればよいですか?明らかに、各訪問時にランダムに生成されるため、私は私たちを見ることができません。何が使えますか?

答えて

2


1. FindElementsメソッドを使用して、指定されたメカニズムを使用して現在のコンテキスト内のすべてのIWebElementsを検索します。 (この場合、あなたは常にあなたが探している要素のインデックスを知っている必要があります。)

IWebDriver driver = new FirefoxDriver(); 
IList<IWebElement> cancelDivs = driver.FindElements(By.XPath("//div[text()='Cancel']")); 
cancelDivs[1].click(); //zero-base index 


2.それらは、ボタンをキャンセルした場合は非ExtJSのIDで識別することができます異なるセクションにあります属性。

<div id='header'> 
    <div unselectable="on" class="x-grid-cell-inner x-unselectable" style="text-align: left; " id="ext-gen1179">Cancel</div> 
</div> 
<div id='footer'> 
    <div unselectable="on" class="x-grid-cell-inner x-unselectable" style="text-align: left; " id="ext-gen2951">Cancel</div> 
</div> 


IWebElement secondCancelDiv = driver.FindElement(By.XPath("//div[@id='footer']//div[text()='Cancel']")); 
secondCancelDiv.Click(); 


3.ものがボタンをキャンセルした場合、異なるExtJSのクラス属性によって識別することができる別のセクションにあります。 `のxpath =(// divの[テキスト()= "キャンセル"])[2]`、より正確

<div id='ext-gen1060' class='x-grid3-body'> 
    <div unselectable="on" class="x-grid-cell-inner x-unselectable" style="text-align: left; " id="ext-gen1179">Cancel</div> 
</div> 
<div id='ext-gen2555' class='x-toolbar-right-row'> 
    <div unselectable="on" class="x-grid-cell-inner x-unselectable" style="text-align: left; " id="ext-gen2951">Cancel</div> 
</div> 


IWebElement secondCancelDiv = driver.FindElement(By.XPath("//div[@class='x-toolbar-right-row']//div[text()='Cancel']")); 
secondCancelDiv.Click(); 
0

場合:

使用//div[text()="Cancel"][2]のXPathセレクタ、または単に見つけ、あなたは常に第二1を必要とするページ上のボタンを 'キャンセル'、および

  • しかなく常に2

    1. 両方をクリックして2番目をクリックします。

  • +0

    (意味のあるものを使用します)。 2つのdiv要素が兄弟でない場合でも動作します。 –

    関連する問題