不确定如何选择此元素
本文关键字:元素 选择 何选择 不确定 | 更新日期: 2023-09-27 18:09:31
我目前正在自动化一个原型网站,我有一个魔鬼的时间找到这个元素。
<div id="cart-number">
<span>3</span>
</div>
<i class="step fi-shopping-cart size-30"></i>
当我检查它时,我可以明显地在标记中看到它。然而,当我试图在编码测试中与它交互时,它找不到它。
[Test]
public void ClickOnShoppingCart()
{
try
{
driver.Navigate().GoToUrl(@"http://m.vdevint4.costco.com/");
IWebElement shoppingCart = driver.FindElement(By.CssSelector(@"i.step.fi-shopping-cart.size-30"));
shoppingCart.Click();
driver.Close();
}
catch (Exception exc)
{
Console.SetWindowSize(200, 88);
Console.WriteLine(exc.Message);
Console.ReadKey();
}
}
此时,我已经尝试了By.CssSelector()
, By.Id()
和By.XPath()
。我的问题是,我错过了什么?有更好的办法吗?我确实在问之前试着在网上研究,但是,我的GoogleFu
今天很弱。
EDIT:我还应该注意,这不是我遇到这个问题的唯一元素。我只是假设这个问题的答案也适用于其他两个(因为它们遵循相同的形式)。
您可以稍等一会儿,等待元素:
new WebDriverWait(driver, TimeSpan.FromMinutes(1)).Until(d => d.FindElements(By.XPath("//i[contains(@class, 'fi-shopping-cart')]")).Any());
然后搜索它:
var btn = driver.FindElement(By.XPath("//i[contains(@class, 'fi-shopping-cart')]"));
if (btn != null)
{
btn.Click();
}
XPath说明:http://www.w3schools.com/XPath/xpath_syntax.asp
我认为问题是I元素的宽度和高度= 0,因此它是不可点击的。
WebElement的javadocs:
要点击一个元素有一些先决条件。元素必须是可见的,且高度和宽度必须大于0。
http://selenium.googlecode.com/git/docs/api/java/org/openqa/selenium/WebElement.html点击()
我猜c#文档没有这么说是个错误,但我不确定。如果你发现这就是为什么你不能点击元素的原因,那么它一定是一个错误。
为了验证是否存在这种情况,您可以尝试在'i'元素中写入一些内容,例如
<i class="step fi-shopping-cart size-30">asd</i>
如果你现在可以点击这个元素,那就可以了。
顺便说一句,你确定你需要点击'i'元素吗?我觉得很奇怪。你通常有一个button, input或a元素;不是一个空 'i'。
另一件你可以尝试的事情是使用不同的浏览器。到目前为止你用的是什么?