Как нажать на элементы в ExtJS с помощью Selenium? - PullRequest
0 голосов
/ 21 января 2012

У меня есть два элемента на моей странице (два элемента 'отмены').

<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 голосов
/ 30 января 2012


1. Используйте метод FindElements, который находит все IWebElements в текущем контексте, используя данный механизм. (В этом случае вам всегда нужно знать индекс элемента, который вы ищете.)

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


2. Если эти кнопки отмены находятся в разных разделах, что можно определить по атрибутам id, отличным от ExtJS.

<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 голосов
/ 21 января 2012

Если:

  1. на странице всегда есть только 2 кнопки «Отмена» и
  2. вам всегда нужен второй,

используйте //div[text()="Cancel"][2] xpath selector, или просто найдите их оба и щелкните на втором.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...