【问题标题】:Jumping from screen A((Web Page) to Screen B(Web Page) bypassing intermediate screens(Web Pages) using selenium webdriver使用 selenium webdriver 绕过中间屏幕(网页)从屏幕 A((网页)跳转到屏幕 B(网页)
【发布时间】:2023-03-22 13:11:01
【问题描述】:

这个问题不是关于窗口处理或多个浏览器窗口的杂耍,而是关于在同一个窗口中浏览 Web 应用程序的网页。 我有一种情况

1.我导航为屏幕A->屏幕x->屏幕Y->屏幕B

2.我需要在第一次登录时捕获屏幕B上的某些参数

3.我需要在第二次登录时验证屏幕 B 上的这些参数

在这里我希望做的是避免浏览中间屏幕并直接跳转到相关屏幕的非重要任务。或者直接获取相关参数,无需介意UI。

注意 - 此应用程序窗口上的 URL 不可手动编辑。

例子-

登录->跳转到屏幕B(首次登录)

登录->跳转到屏幕B(第二次登录)

首先,这有可能吗? 请帮助我提出如何实现这一目标的建议

附加细节-

查看名为 Selenium Test 275(应用程序中的特定网页)的项目的 URL 是 ->

http://172.24.186.71/esssfa/sfanew/UnitList.aspx?OID=12762&PID=12731&PRID=1&SecID=3

【问题讨论】:

  • screen 表示要在 diff 之间切换。同一浏览器的标签页?
  • 没有。 Screen表示Web应用程序前的页面-登录页面/仪表板/主页
  • 哦,那么你可以很容易地传递特定的页面 URL 并在你想要获取数据时进入它。
  • 我尝试了 driver.get(所需页面的 URL),但它给出了无效的会话页面
  • 你可以手动做吗?

标签: java html selenium selenium-webdriver webdriver


【解决方案1】:

编辑:

我想我明白你现在的要求了。如果你想轻松地跳回几页,到那个特定的屏幕 B,我会使用 JavaScript。

(-1) 将获取浏览器堆栈上的最后一页。 (-2) 两个页面,并且 (2) 将使浏览器在浏览器上向前获取两个页面。 如果您想返回屏幕 B,请在登录后尝试类似的操作。

driver.execute_script("window.history.go(-2)")

然后可以使用一个变量来存储您要比较的上次登录的数据。

【讨论】:

  • 感谢 eddie 的帮助,但我不想编辑两个不同的窗口。我试图避免在同一窗口内的网络应用程序页面之间进行不必要的导航
  • 答案很有用(因此 1+),但仍然没有达到我的目标。我想使用其 URL 跳转到特定屏幕,使用 go(-2) 会使我进入历史屏幕。
【解决方案2】:

可能是根据服务器的响应打开第二个窗口? 例如 - 服务器可能会返回一个 URI 以及一个会话/安全属性(JSESSIONID、授权等),然后附加基本 URI 以打开新窗口。 session/security 属性解释了当您尝试获取第二页的 driver.get(URL) 时的无效会话页面消息。

冒着重复的风险(改写 Vivek 的问题)- 你能以这种方式打开第二个屏幕吗: 登录到应用程序(第一个屏幕) -> 打开一个新的浏览器窗口 -> 粘贴第二个屏幕的(只读)URL,然后按 Enter -> 检查第二个屏幕是否打开。

如果是,那么它似乎不仅仅是简单的 GET 请求,还可能是请求标头中带有某种授权代码的请求。

其他详细信息可能有助于回答您的问题:有可能吗?!

【讨论】:

  • 真的吗?否决票?!有人希望得到那个模糊问题描述的答案吗?我试图提供指针或下一步看哪里!
  • 我猜你是对的(因此 +1),但我宁愿期待这个问题的答案。我已经提供了一个示例 URL 来查看我的问题中的项目作为附加细节,让我知道您是否需要其他任何东西
猜你喜欢
  • 2012-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-07
  • 2020-08-16
  • 2012-06-16
  • 2011-08-03
相关资源
最近更新 更多