当前位置: 首页 > 面试题库 >

Selenium Java浏览器会话重用

太叔凌龙
2023-03-14
问题内容

我的问题如下:如何在不同Java类中的测试中重复使用浏览器会话?我打开了这样的浏览器:

public class OpenBrowser {

    public static WebDriver driver;

    @BeforeSuite
    public static void openb() {
        // Create a new instance of the Firefox driver
        driver = new FirefoxDriver();
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    }
}

然后,我必须使用一些凭据登录网站,并在登录后想执行其他测试,所以我不想为每个测试都登录,因为我需要进行很多测试并为每个用户登录花十年时间。例如,流程如下所示:登录->推送一些组件->添加一些值->生成报告。在此之后,我想在另一个组件上生成其他报告,但是当我尝试使用它时,将给出一个空指针异常。有任何想法吗?:)


问题答案:

Selenium 2WebDriver中,您可以调用

driver = new FirefoxDriver();

会产生一个浏览器,并且该浏览器将在测试期间保持打开状态,

或者您可以选择用关闭它driver.Quit()

其实我想做什么?

我喜欢在两次测试之间关闭浏览器窗口,以使我知道测试不会 “弄脏”
存储的会话数据,因为会话数据可能会影响测试的运行方式,但是我可以看到一些针对性测试的价值,在此我可以尝试一些不同的场景,同时保持相同的会话进行。

对于代码级别:您可以检查它是否为null。如果为null,则调用浏览器以提供另一个。

/**
 * Driver for web application.
 * 
 * @return driver Browser
 * @throws IOException
 */
public WebDriver getDriverBrowser() throws IOException {

if (driverBrowser == null) {
    String sBrowser = PropertyLoader.loadProperty("browser");
    driverBrowser = getBrowser(sBrowser);
    driverBrowser
            .manage()
            .timeouts()
            .implicitlyWait(
                    Integer.valueOf(PropertyLoader
                            .loadProperty("implicit_timeout_sec")),
                    TimeUnit.SECONDS);
    driverBrowser.manage().window().maximize();
}
return driverBrowser;
}

或者,您可以使用xml配置将某些测试用例用作类级别或特定于测试的测试。使用TestNG,可以指定要运行的测试(TestNG will generate an XML file of all of the tests that fail, so when you run it, it will only execute the failed tests)

问题-1:
我的意思是我不想再次登录以继续测试,我不介意它是否会打开另一个窗口,实际上,正如您所说的那样,它更可靠,但如果我必须再次登录则无济于事。

如果您不想登录,那么在每个测试用例中,都需要一个基本的起点。结束任何测试用例后,它将转到基准位置,下一个测试用例将从基准开始

问题-2: 如何实现基本起点?

它是由你决定。首先,您必须分析测试用例,然后必须选择哪个点可以作为所有或某些测试用例集的起点。然后就可以做到。

有关更多:

  1. https://github.com/seleniumhq/selenium-google-code-issue-archive/issues/3927
  2. https://sqa.stackexchange.com/questions/1988/selenium-reuse-existing-browser-session-instead-of-opening-new-windows


 类似资料:
  • 问题内容: 尽管此问题有多个重复项,但我找不到适合我的解决方案。需要一些帮助。 我已在配置文件中使用过。 但这并没有帮助我破坏浏览器关闭时的会话。 应用电流: 1)如果用户有效,则在身份验证页面中,使用生成新的会话标识符 2)控制转到welcome.php,在这里我使用开始新的会话 3)在注销页面中的代码是 问题答案: 最好的方法是关闭会话:如果在特定时间间隔后该会话没有响应。然后关闭。

  • 问题内容: 我刚接触selenium。我生成了我的第一个Javaselenium测试用例,它已成功编译。但是当我运行该测试时,我得到了以下RuntimeException 请告诉我如何解决此错误。 这是我要运行的Java文件。 我首先通过命令提示符启动了selenium服务器,然后通过另一个命令提示符执行了上述java文件。 第二个问题:我可以右键单击包含selenium的网页上的指定位置。 问题

  • 我正在使用spring boot开发一个小应用程序。我的问题是,我需要显示用户的名字时,一个用户的身份验证正确。每次身份验证(每次登录输入用户名和密码)都会正确显示名字。但是如果我们关闭浏览器并在会话超时之前重新打开它,而没有输入用户名和密码,则不会显示First name。 身份验证时我的口供 安全配置 会话列表 我参考了Java:为什么当tab或浏览器关闭时http会话不被破坏?,正如他们所说

  • 场景: 我正在使用什么应用网络来操作一个自动的什么应用响应器。 我使用python 3通过selenium上的chromedriver登录。 我运行一个函数,它在< code>while True中做一些事情。 问题: 有时,由于缺乏与手机的关联性或其他任何问题,程序无法以正确的方式运行。 有很多因素可能导致整个事情失去正确的流程。我正在分析它们并尽可能地修复它们。 问题: 我产生了这样的想法,也

  • 问题内容: 我们有一个基于JSF 2.0(MyFaces)构建并在Weblogic应用服务器上运行的应用程序。我们面临有关http Session的问题。 问题: 假设我已经在两个不同的IE窗口中打开了该应用程序,并在第一个窗口中提供了一些搜索输入。在第二个窗口的会话中共享在第一个窗口中接收到的搜索结果数据。 注: 。Bean的作用域为,范围为。共享变量没有问题。 知道为什么会这样吗,以及防止这种