gpt4 book ai didi

java - 单击提交按钮时,用户不会导航到 Selenium Webdriver 中的下一页

转载 作者:行者123 更新时间:2023-12-01 04:34:02 24 4
gpt4 key购买 nike

我正在自动化一个用于购物的 Web 应用程序。在特定页面中,我必须通过单击提交按钮来提交。我在 selenium web 驱动程序中编写了代码,以实现同样的事情发生。单击了按钮,但它从未导航到下一页,也没有引发任何异常,我可以看到测试运行成功。

package org.karmaloop.testcase;

import java.io.File;
import java.io.IOException;

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.BlockJUnit4ClassRunner;
import org.karmaloop.configuration.Testconfiguration;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriverService;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;

@RunWith(BlockJUnit4ClassRunner.class)
public class testcase1 {

private static ChromeDriverService srv;
private WebDriver driver;

@BeforeClass
public static void StartServer() throws IOException {
// Below file path to Chrome browser should be changed accordingly
srv = new ChromeDriverService.Builder()
.usingDriverExecutable(
new File("D:\\chromedriver\\chromedriver.exe"))
.usingAnyFreePort().build();
srv.start();
}

@AfterClass
public static void tearDownAfterClass() throws Exception {
}

@Before()
public void setUp() throws Exception {

driver = new RemoteWebDriver(srv.getUrl(), DesiredCapabilities.chrome());
}

@After
public void tearDown() throws Exception {
}

@Test
public void test() throws Exception {


Normal_Checkout();

}

private void Normal_Checkout() throws Exception {

//To get commented

driver.get("https://m.karmaloop.com/product/The-Superstar-80s-GRF-Sneaker-in-Wheat-Black-Chalk/384883");
driver.findElement(By.cssSelector(Testconfiguration.size_dropdown)).click();
System.out.println("success");
Thread.sleep(4000);
driver.findElement(By.xpath(Testconfiguration.select_size)).click();
Thread.sleep(4000);
driver.findElement(By.xpath(Testconfiguration.addtocart_button)).click();
Thread.sleep(7000);


driver.findElement(By.xpath(Testconfiguration.pcheckout_button)).click();
Thread.sleep(5000);

// To get commented

driver.findElement(By.xpath(Testconfiguration.checkout_logintxtbox)).sendKeys(Testconfiguration.checkout_login_username);
Thread.sleep(5000);
driver.findElement(By.xpath(Testconfiguration.checkout_passwordtxtbox)).sendKeys(Testconfiguration.checkout_login_password);
Thread.sleep(5000);
driver.findElement(By.xpath(Testconfiguration.checkout_loginbtn)).click();
Thread.sleep(10000);
System.out.println("Passed before checkout");
driver.findElement(By.xpath(Testconfiguration.submit_button));
Thread.sleep(20000);
System.out.println("submit clicked");
}}

================================================== =====================================我已经使用 xpath 来单击提交按钮。谁能帮我解决这个问题。

最佳答案

我之前在使用 selenium 时遇到过这个问题,虽然我没有解决方案,但我确实有一个在大多数情况下都有效的解决方法。

单击提交按钮后,如果尝试与下一页上的元素交互,Selenium 应该通过 NoSuchElementException 异常。捕获这个并尝试重新单击提交按钮(因为您可以假设页面未加载)。十分之九这对我有用。

哦,还有一个您可能会发现有用的提示,不要在每次加载页面后手动等待五秒钟,而是使用 implicitlyWait 。 browser.implicitlyWait(30) 将使浏览器在抛出 NoSuchElementException 之前等待长达 30 秒的页面加载时间。

希望这有帮助。祝你好运。

编辑:我可能是错的,我相信建议您不要使用 XPath 作为选择器,除非您绝对必须这样做,因为它比替代方案(如 ID)慢得多,因为它必须遍历 XPath 。

关于java - 单击提交按钮时,用户不会导航到 Selenium Webdriver 中的下一页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17587943/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com