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

如何在不清除cookie或缓存的情况下启动Selenium RemoteWebDriver或WebDriver?

秦跃
2023-03-14
问题内容

用例:使用用户名登录,导航到第二因素认证页面以执行多项操作(即回答基于知识的问题),然后导航至最后一页以输入密码。关闭浏览器,然后尝试使用用户名再次登录。这次绕过了第二因素身份验证页面,因为该应用程序识别出cookie,并提示用户直接输入密码。

问题:我正在使用Selenium
RemoteWebDriver在单独的测试计算机上运行这些测试,并且当我关闭第一个浏览器并打开一个新的RemoteWebDriver实例时,它似乎首先清除Cookie和缓存,并且每次我打开第二个身份验证页面尝试登录。

我需要什么:帮助弄清楚如何创建RemoteWebDriver的新实例,而又不会自动清除任何cookie或缓存,因此将绕过第二个因素身份验证页面。我需要IE,Chrome,Firefox和Safari浏览器。

我没有任何代码可以明确清除此代码,但是我也没有任何尝试将其清除的代码(如果存在的话)。我没有尝试过太多其他事情,因为我不知道尝试什么。

版本:Selenium WebDriver:2.45.0.0,Selenium Grid:2.45.0

谢谢!


问题答案:

在Firefox上保留cookie;创建一个自定义配置文件(请参阅此处的示例),并在每次启动新的RemoteWebDriver实例时使用它。这样,Firefox将在会话之间的所有现有cookie中重用相同的配置文件。但是,这不会保存测试本身收到的cookie。请参阅下面的替代方法以获取解决方案。

类似的方法适用于Chrome-
link。

对于Internet
Explorer(而不是自定义配置文件),需要确保将CleanCleanSession功能设置为false,以防止在会话启动链接上清除cookie

替代解决方案 :Cookies也可以在测试本身中进行操作:

  1. 测试结束时获取所有cookie:

ReadOnlyCollection<Cookie> cookies = driver.Manage().Cookies.AllCookies;

  1. 将它们存放在某个地方。如何执行取决于自动化设置,但是通常简单地序列化到磁盘应该可以正常工作。

  2. 在测试开始时反序列化cookie并通过WebDriver添加它们:

foreach (var cookie in cookies) driver.Manage().Cookies.AddCookie(cookie);



 类似资料:
  • 我有一个每10分钟运行一次的cron作业,并更新内容类型和x-amz-meta。但从昨天开始,似乎在cron作业运行之后,亚马逊并没有恢复所做的更改(刷新他的缓存)。 我甚至手动进行了更改,但没有更改... 上载视频时,它有一个应用程序/x-mp4内容类型,cron作业将其更改为视频/mp4。 虽然S3的内容类型正确,但cloudfront显示的是应用程序/x-mp4(旧的内容类型)。。。。 cr

  • 我试图找到类似的问题,但找不到解决我问题的最佳方案。我在应用程序中使用SpringBoot,在代码中使用集成的solace队列。我可以使用以下代码读取solace队列中的消息: 在SpringBoot的帮助下,所有属性(如VPN)都从属性文件中提取,并创建ConnectionFactory。下面是读取消息的代码: 根据消息的类型,定位服务执行器并处理消息。它对我们完全有效。 但是,在某些情况下,我

  • 问题内容: 我使用nginx作为前端服务器,我修改了CSS文件,但是nginx仍在使用旧文件。 我试图重新启动nginx,但没有成功,我已经用Google搜索,但是找不到清除它的有效方法。 一些文章说我们只能删除缓存目录:,但是我的服务器上没有这样的目录。 我现在该怎么办? 问题答案: 我遇到了完全相同的问题-我在Virtualbox中运行了Nginx。我没有打开缓存。但是看起来像已经设置好了,这

  • 我已在登录时在本地存储中设置了身份验证令牌,并在注销时将其清除。注销后,如果用户尝试再次登录,则从缓存中获取旧的身份验证令牌,而不是新设置的值。如何在清除本地存储时清除缓存。我在应用程序中使用angular 2。 登录: 注销:

  • 问题内容: 我正在学习使用Selenium(v2.20)来领先一些 即将使用它创建浏览器测试的程序员。我想在 陷阱到达之前发现它们,而我却跌入了一个陷阱。 当我创建ChromeDriver时,它始终会弹出“ Google Chrome EULA”并 显示两个按钮:“接受并运行”和“取消”。因为我希望这是一个 自动化测试,所以让用户单击按钮是不可能的。 我查看了Chromium CommandSwi

  • 本文向大家介绍C#清除WebBrowser中Cookie缓存的方法,包括了C#清除WebBrowser中Cookie缓存的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#清除WebBrowser中Cookie缓存的方法。分享给大家供大家参考,具体如下: 最近用C#写一个程序,用一个窗体中的WebBrowser来登陆网站,但是WebBrowser有cookie缓存,第二次登陆的时候W