2012-01-20 21 views
0

我的頁面上有兩個元素(兩個「取消」元素)。如何點擊使用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> 

如何點擊第二個元素?顯然,我不能使用id,因爲它是在每次訪問時隨機生成的。我可以使用什麼?

回答

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類的屬性來標識。更正確地(使用有意義的)

<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

如果:

  1. 有永遠只有2 '取消' 頁面上的按鈕,並
  2. 你總是需要:第二個,

使用//div[text()="Cancel"][2] XPath的選擇,或者只是找他們兩個並點擊第二個。

+0

,'的xpath =(// DIV [文本()= 「取消」])[2]'。即使兩個'div'元素不是兄弟姐妹,這也可以工作。 –

相關問題