【问题标题】:Is there a way to type a non-URL value (URL without protocol http/https) to address bar in chrome browser in Selenium(java)?有没有办法在 Selenium(java) 的 chrome 浏览器中输入非 URL 值(没有协议 http/https 的 URL)到地址栏?
【发布时间】:2020-11-12 13:14:49
【问题描述】:

我有一个验证要在地址栏中需要输入一些文本的地方执行,这会将我重定向到某个页面。然后我需要捕获当前 URL 并使用预期的 URL 值对其进行验证。

到目前为止我尝试过的方法

  • driver.get(https://www.google.com);
  • 使用 Robot 类我控制了地址栏
    Robot rb = new Robot();
    rb.keyPress(KeyEvent.VK_CONTROL);
    rb.keyPress(KeyEvent.VK_L);
  • 现在我需要将密钥发送到地址栏。例如-'SELENIUM',当我按下回车按钮时,它会将我重定向到某个页面。这里我需要捕获页面的 URL 并用我的期望值进行验证。 3a。要发送密钥,我尝试了以下方法,但没有成功:
Action action = new Actions (driver);
actions.sendKeys("mytext");
  • 我也尝试过使用 Java Script Executor,但似乎我需要定位器,我无法找到地址栏,因为它无法被检查。PFA

【问题讨论】:

  • 您是否尝试过执行设置 document.location 的脚本?:developer.mozilla.org/en-US/docs/Web/API/Document/location
  • 感谢您的回复,但没有成功。我也在考虑使用“Point”(Java)类来获取坐标,但它也需要定位器。不幸的是,我需要一些不需要定位器的解决方案,因为无法检查地址栏。

标签: java selenium selenium-webdriver


【解决方案1】:

我看不出您需要验证在地址栏中按字面输入文本的原因。我认为您可能误解了要求。地址栏属于浏览器,而不是您的应用程序,所以我不认为它是您需要测试的。

您应该只使用 driver.get() 并使用 driver.findElement() 在新页面独有的东西上验证页面是否已加载,然后检查该元素是否显示/启用。如果您真的想获取 URL,那么您可以执行 driver.getCurrentURL()。

【讨论】:

  • 我们有一些虚 URL 需要验证,它们的格式为 - "ApplicationName/VanityEndPoint"。达到此非 URL 值时;它把我们带到一个链接到这个虚荣端点的页面。例如 - Vanity 端点是“/PIZZA”,因此它会将您带到比萨主页,这就是我的验证是我需要捕获 URL 并验证它是否是比萨 URL。
  • 所以澄清一下,您的目标是捕获 URL 以验证页面是否已加载?如果这是真的,那么请阅读我关于如何验证页面已加载的答案。
  • 感谢您的回复!我一开始就无法加载 URL。验证稍后进行:) 首先我需要在地址栏中加载一个非 URL 值,这就是我遇到的问题。 driver.get() / driver.navigate().to() 在传递非 URL 值时抛出无效参数错误。它只接受带有协议的 URL。
  • 为什么不能把协议放在虚 URL 之前?当您尝试在 URL 地址栏中不使用协议的情况下进行搜索时,它是否仍然无法在后台有效地执行此操作?
  • 好吧,我想我现在明白了,但我不确定为什么有人告诉你要像这样测试虚 URL。这真的没有任何意义,一旦您使用虚 URL 进行搜索,那么它当然会更改为完整的 URL?如果你想对 URL 进行断言,那么对完整的 URL 进行断言,这将告诉你虚 URL 是否真的有效。您创建测试,可以将虚 URL 硬编码到测试中,您知道您正在使用虚 URL,因此单击搜索后您可以查找完整的 URL,这很好,我不相信您正在尝试做什么是可能的。
猜你喜欢
  • 1970-01-01
  • 2014-05-09
  • 2011-04-06
  • 1970-01-01
  • 2010-12-24
  • 1970-01-01
  • 2020-06-30
  • 2017-05-25
  • 2021-11-08
相关资源
最近更新 更多