我是测试自动化的新手。当我通过带有目标的 Firepath 定位元素时:
xpath=(//td[contains(@id, 'catProdTd_4723290')]/div/div[2]/h2)
Firefox 找到该元素并验证文本。但是,当我尝试使用 Visual Studio 2012 和 Selenium Web 驱动程序定位这个元素时,我经常遇到错误:“无法定位元素:{“method”:“xpath”,“selector”:“//td[contains(@ id, 'catProdTd_4723290')]/div/div[2]/h2"}" 。
我试图逃避:
//td[@id=\"catProdTd_4723290\"]/div/div[2]/h2
但什么都没有。当我使用 isElementPresent 方法时,它会创建元素。在为 WebDriver 编写 Xpath 时,是否应该使用一些特殊的方法或规则?我定义了 ISelenium 变量,WebDriver... Clicks 有效,WaitForPageToLoad 有效,但这无法定位元素。
IWebElement we= driver.FindElement(By.XPath("//td[contains(@id, 'catProdTd_4723290')]/div/div[2]/h2"));
来自页面的 HTML:
<td class="productItem" id="catProdTd_4723290"><div class="product-details">
<div class="product-aside"> <img border="0" alt="Fork and Spoon Set" src="/_photos/store/glass-large.jpg" id="catlproduct_4723290">
</div>
<div class="product-main">
<h2 class="product-name">Fork and Spoon Set</h2>
<div class="price"><strong>$17.99</strong></div>
<hr>
<div class="attributes"></div>
<hr>
<div class="product-col-1">
<div class="qty"> Quantity: <strong><input type="text" value="1" name="AddToCart_Amount" class="productTextInput" id="Units_4723290"></strong></div>
<div class="stock">(N/A in-stock)</div>
</div>
<div class="product-col-2">
<input type="submit" onclick="AddToCart(192951,4723290,'',4,'','',true);return false;" value="Buy Now" name="AddToCart_Submit" class="productSubmitInput">
<div class="wish"><a href="/FavoriteProcess.aspx?OID=4723290&OTYPE=27" class="favoritelink">Add to Wishlist</a></div>
</div>
<div class="product-description">
<h4>Product Information:</h4>
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean
commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus
</div>
</div>
<!-- End Main -->
</div>
<!-- End Product Details -->
</td>
我必须补充一点,我尝试在调试期间等待
Manage().Timeouts().ImplicitlyWait
但什么都没有。这也发生在其他地方。我使用 Firefox 进行测试