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 关闭,为测试分配的现有内存将被丢弃。
假设我按下了一个按钮,并且需要获取按下该按钮后使用特定查询参数生成的 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 关闭,为测试分配的现有内存将被丢弃。