我的页面上有两个元素(两个“取消”元素)。
<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,因为它是在每次访问时随机生成的。我可以使用什么?
1.使用FindElements方法,该方法使用给定的机制查找当前上下文内的所有IWebElement。(在这种情况下,您始终需要知道要查找的元素的索引。)
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();