c# – 如何修复“元素当前不可见”的Selenium元素

我想点击< a> < div>内的元素.
这是html:

<div class="cart__checkout cart__checkout--small">
   <a class="button button--lg button--info button--checkout" title = "Checkout" href = "https://shop.adidas.ae/en/checkout/onepage/">
      <span> Checkout </span>
      <i class="icon-sprite icon-sprite-arrow-white-right-type-4"></i>
   </a>
</div>
<button id="update_cart_action" class = "button btn-update" style = "display: none;" type = "submit" name = "update_cart_action" value = "update_qty" title = "Update Shopping Cart"></button>

如果你想看到它的原始网站https://shop.adidas.ae/en/checkout/cart/(你必须在你的购物车上添加一些东西才能看到我所看到的)

我尝试了三种不同的方式:

第一种方式,我的目标是div:

var checkoutButton = driver.FindElement(By.ClassName("cart__checkout cart__checkout--small"));

(然后点击)

我得到错误

An unhandled exception of type ‘OpenQA.Selenium.InvalidSelectorException’ occurred in WebDriver.dll
Additional information: The given selector cart__checkout cart__checkout–small is either invalid or does not result in a WebElement. The following error occurred:
InvalidSelectorError: Compound class names not permitted

为了对抗复合类名称错误,我尝试了以下代码

var checkoutButton = driver.FindElement(By.CssSelector("div[class*= 'cart__checkout cart__checkout--small']"));

没有任何反应,我假设它被点击,但没有点击实际链接(第二个选项).

我认为这可能是点击实际元素的有效方法,除了div实际上比链接大得多.我假设selenium正在点击div的中心,但正如你从下面的截图中看到的那样,div的中心没有链接.有没有办法抵消我的Click()函数

或者,我试图将a作为目标:

var checkoutButton = driver.FindElement(By.CssSelector("a[class*='button button--lg button--info button--checkout']"));

这只是给出了错误,它不在当前视图中,很可能是因为a在div下面

错误

An unhandled exception of type ‘OpenQA.Selenium.ElementNotVisibleException’ occurred in WebDriver.dll
Additional information: Element is not currently visible and so may not be interacted with

谢谢你的帮忙.我认为我的第二个选择是最好的选择.有没有办法抵消Click()?谢谢.

解决方法:

我已经能够获得该按钮并使用以下XPATH单击它:

//*[@id = 'cart-form']//a[@title = 'Checkout']

所以在C#中你会这样做:

var checkoutButton = driver.FindElement(By.XPath("//*[@id = 'cart-form']//a[@title = 'Checkout']"))

如果你想更好地理解它,我可以为你分解XPATH.

相关文章

转载地址:https://www.cnblogs.com/mini-monkey/p/12104821...
web自动化测试过程中页面截图相对比较简单,可以直接使用sel...
目录前言一、Selenium简介二、浏览器驱动1.浏览器驱动参考2....
一、iframe的含义:iframe是HTML中框架的一种形式,在对界面...
转载请注明出处❤️作者:测试蔡坨坨原文链接:caituotuo.to...
'''##**认识selenium**​**下载:pipinstall...