selenium 是否有办法访问在特定操作后生成的值?

Does selenium have a way to access a value that is generated after a specific action?

假设我按下了一个按钮,并且需要获取按下该按钮后使用特定查询参数生成的 URL。

    public string pressAButton()
        {
            button.Click();
            var URL = driver.Url.ToString();
            return URL;
        }

我基本上需要通过按下该按钮创建一个 URL 并导航到它以在一周中的特定几天做一些其他事情。

一旦我有了这个 url 我需要另一种方法来导航到它但是这个新方法 用于单独的测试,它需要URL 由第一种方法生成。

selenium 有办法处理这个问题吗?新的测试无法调用里面的pressAButton方法,有没有办法在单独的测试中从第一个方法中获取值?

由于您需要在另一个测试中访问一个测试的值,而这两个测试在不同的测试 运行 中是 运行,因此您需要保存 URL到一个文本文件。当第二次测试 运行s 时,打开那个文本文件,读取 URL 并使用它。

测试#1

var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30));

button.Click();
wait.Until(ExpectedConditions.StalenessOf(button));

File.WriteAllText(@"path\to\url.txt", driver.Url);

注意:driver.Url已经是一个字符串。无需调用 driver.Url.ToString().

测试 #2(运行 几天后)

var urlFromPreviousTest = File.ReadAllText(@"path\to\url.txt");

driver.Navigate().GoToUrl(urlFromPreviousTest);

由于您有两个单独的测试调用,因此您需要某种持久存储。将 URL 保存到文件或数据库是您唯一的选择。内存中的解决方案将不起作用,因为一旦测试 运行ner 关闭,为测试分配的现有内存将被丢弃。