当前位置: 首页 > 知识库问答 >
问题:

Selenium单击和手动单击返回不同的当前URL

顾恺
2023-03-14

我遇到了一个问题

我在谷歌上搜索了这个https://www.google.com/search?q=sen做

上面的链接也是如此,使用了下面的代码,但它只返回https://www.sendo.vn/(缺少参数)

这是密码

driver.get("${the_above_google_search_url}")

// Find first result element
Web firstResultElement = driver.findElement(By.className("iUh30"))

firstResultElement.click()

String currentUrl = driver.getCurrentUrl()

任何解决方案,以获得完整的网址路径与硒像手动点击?

共有1个答案

焦信鸥
2023-03-14

我进入到你的网页,检查页面,我看到有两个重定向(状态302)点击后,在谷歌搜索的第一个结果:

第二个重定向在头位置中有您要查找的url,因为它是一个重定向(302):

如果您等待,浏览器将执行第二个重定向并加载url:

等待第二次重定向,然后使用经典方法获取url。

web是在react上开发的,这就是使用javascript呈现的原因。这使selenium自动化有点复杂。

您需要搜索一个元素,该元素的存在表明您在第二次重定向后已准备就绪。我发现了这个:

document.querySelector('[aria-label="sendo logo"]');

将此查询选择器转换为selenium:

By.cssSelector("a[aria-label='sendo logo']");

然后等待它:

wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector("a[aria-label='sendo logo']")));

如果在这个元素之后,您继续获得相同的url,而不是完整的url,只需尝试使用另一个html元素。

尝试使用selenium获取页面的标题

 类似资料:
  • 我已经用selenium编写了一个自动化测试用例来测试登录页面,应该点击忘记密码链接。浏览器打开并转到给定的url,但忘记密码链接不会自动点击,有人能告诉我的代码有什么问题吗。 基本代码 Browsers.java 数据属性 控制台: 超文本标记语言代码

  • 问题内容: 打开baseUrl后,我手动单击同意,然后搜索要显示的医生列表。我想翻阅清单。现在,Selenium仅通过找到“ ”来第一次单击。之后它停止并给出以下错误。 问题答案: 错误说明了一切: 在循环内的程序中,您将在页面上找到文本标记为 > >*的tag元素并进行调用,并且由于 HTML DOM 发生更改而导致该事件。当您的程序第二次迭代循环时,也许未加载标识为的 WebElement ,

  • 问题内容: 打开baseUrl后,我手动单击同意,然后搜索要显示的医生列表。我想翻阅清单。现在,Selenium仅通过找到“ ”第一次单击。之后它停止并给出以下错误。 问题答案: 错误说明了一切: 在循环内的程序中,您将在页面上找到文本标记为 > >*的tag元素并进行调用,并且由于 HTML DOM 发生更改而导致的事件。当您的程序第二次迭代循环时,也许未加载标识为的 WebElement ,但

  • 我无法单击子菜单。。尝试使用不同的xpath/id。。。。。 下面是html标签,主菜单是演示文稿(用红色箭头标记),子菜单在div下。 您能告诉我如何为此编写xpath吗。我想单击子菜单中的“假设”。 这里主菜单标签位于div(子菜单)的底部。 另附硒代码。请帮帮我。。。。

  • 我需要在商品搜索中键入“香蕉”,然后点击“GO”按钮。 在堆栈溢出的帮助下,我可以调出火狐,输入“香蕉”...但是“Go”按钮(基于检查的Go3)不会开火!! 我试过element.click(),试过ActionChains,试过将光标移动到元素,试过验证它已经启用。它只是不会转到下一个搜索页面。 我没有得到任何错误...它只是没有进入下一页。 谢谢你能提供的任何帮助。快把我逼疯了!

  • 问题内容: 我有一个简单的代码,单击链接即可打开一个新窗口。但是在执行脚本时,单击相当于双击同一元素,并打开2个窗口。 我正在使用InternetExplorer驱动程序 问题答案: 当你一起工作 , 用 ,您可以考虑通过传递以下配置属性 类别: :由于InternetExplorerDriver仅适用于Windows,因此它尝试使用所谓的“本机”或OS级事件在浏览器中执行鼠标和键盘操作。这与对相