如何使用Selenium点击ExtJS中的元素?

时间:2012-01-20 22:31:11

标签: extjs selenium webdriver selenium-webdriver

我的页面上有两个元素(两个'取消'元素)。

<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 个答案:

答案 0 :(得分: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();

答案 1 :(得分:0)

如果:

  1. 页面上总是只有2个“取消”按钮,
  2. 你总是需要第二个,
  3. 使用//div[text()="Cancel"][2] xpath选择器,或者只找到它们并点击第二个。