不确定如何选择此元素

本文关键字:元素 选择 何选择 不确定 | 更新日期: 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'。

另一件你可以尝试的事情是使用不同的浏览器。到目前为止你用的是什么?