用于定位按钮元素的定位器在代码中不起作用,但在 Chrome 内部搜索中有效

Locator for locating button element does not work when placed in the code but it works in Chrome internal search

https://www.dell.com/en-us/cart?cs=19&~ck=mn

如果我们没有活动的购物车商品,请在搜索栏中搜索 "Laptops ",然后将一个购物车商品添加到其中。点击“转到购物车”,现在它将进入购物车页面。结帐按钮将列在 "Cart Summary" 下。我想让你找到结帐按钮。请帮我找到它。

当我尝试使用下面的 Xpath 定位时,它在 ChromSearch 选项卡中工作,但是当我放入 C# 代码并尝试它时,它会抛出异常。

(//*[text()='Checkout'])[1]

(//button[@ng-class='continueDellMetricsClass'][text()='Checkout'])[1]

请与我分享使用 C#

在购物车中定位 Checkout 按钮的定位器

所需的元素是 Angular element so you have to induce WebDriverWait for the desired ElementToBeClickable and you can use either of the following 作为解决方案:

  • CssSelector:

    new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementToBeClickable(By.CssSelector("aside.visible-md.visible-lg button.continueButton"))).Click();
    
  • XPath:

    new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementToBeClickable(By.XPath("//aside[@class='visible-md visible-lg col-md-4 clearfix ng-scope']//button[@class='btn btn-success btn-block continueButton']"))).Click();