硒不存在这样的元素

Selenium no such element exists

我正在尝试在我的暂存网站上执行简单的结帐流程,但我似乎找不到该元素。我尝试使用有效的 selenium IDE 但是在 java 中编码时我一直卡在安全结帐

这是我要点击的元素按钮

<a class="checkout-anchor click-button display-flex vertical-align-center justify-center" href="javascript:void(0);" onclick="onCheckout()" data-stepid="cartstep04">
<img src="https://release.squareoffnow.com/public/assets/images/checkout/svg/secure.svg" class="secure-pic ls-is-cached lazyloaded" alt="">Secure Checkout</a>

这是我目前写的代码

package googleTestCases;

import org.openqa.selenium.By;
import org.openqa.selenium.Dimension;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class simpleCartFlow {
    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver","/Users/manavmehta/Desktop/squareoffSeleniumProjects/chromedriver");
        WebDriver driver=new ChromeDriver();
        driver.get("http://release.squareoffnow.com/");
        driver.manage().window().setSize(new Dimension(1440, 789));
        driver.findElement(By.linkText("Products")).click();
        driver.findElement(By.cssSelector(".store-buy-pro-button")).click();
        driver.findElement(By.cssSelector(".pro-twinpack-button")).click();
        driver.findElement(By.cssSelector(".whole-purchase-button")).click();
        driver.findElement(By.cssSelector(".productAvailability > .click-button")).click();
        driver.findElement(By.cssSelector(".giftpackSubmit")).click();
        System.out.println("button not clicked");
        driver.findElement(By.cssSelector(".checkout-anchor")).click();
        System.out.println("button clicked");


        driver.quit();
    }
}

我没有使用 CSS 选择器,而是尝试使用 linkText,但它仍然不起作用

我一直收到这个错误

我怀疑您的问题是因为等待元素出现的时间不够长。我 运行 以下成功地使用了与您拥有的完全相同的选择器(尽管使用 Python 而不是 Java):

from seleniumbase import BaseCase

class MyTestClass(BaseCase):
    def test_base(self):
        self.open("https://release.squareoffnow.com/")
        self.click_link("Products")
        self.click(".store-buy-pro-button")
        self.click(".pro-twinpack-button")
        self.click(".whole-purchase-button")
        self.click(".productAvailability > .click-button")
        self.click(".giftpackSubmit")
        self.click(".checkout-anchor")

完全披露:这个特定的框架 SeleniumBase 是我个人构建的,它使用 smart-waiting 来确保元素在采取行动之前已完全加载。 Java 可能有类似的东西,因此您可以等待元素可点击,这样您就不必在步骤之间休眠任意时间。