在 selenium 导航后获取电流 url?

Getting current url after selenium navigation?

我有一个运行 Selenium 并在 YouTube 上搜索我的 Python 脚本。在我的 .send_keys() 和 .submit() 命令之后,我尝试使用 print(driver.current_url) 获取搜索页面的当前 url 但它只给我原始的 url 来自我的 driver.get('https://www.youtube.com') 命令。 我如何才能获得搜索页面的完整当前 url 路径?例如 https://www.youtube.com/results?search_query=election instead of https://www.youtube.com。 谢谢。

由于您没有分享您尝试过的代码。我猜问题出在您的页面加载上。单击提交后,您不会在获得 url 之前给页面加载任何时间。请给一些等待时间。最简单(不太好)的方法是使用 :

time.sleep(5)
print(driver.current_url)

以上将等待 5 秒

您为什么要将社交媒体应用到自动化 出于多种原因,不建议使用 WebDriver 登录 Gmail 和 Facebook 等网站。除了违反这些网站的使用条款(您可能会面临关闭帐户的风险)之外,它速度缓慢且不可靠。

理想的做法是使用电子邮件提供商提供的 API,或者在 Facebook 的情况下,开发者工具服务公开 API 用于创建测试帐户、朋友等向前。尽管使用 API 可能看起来有点额外的艰苦工作,但您将在速度、可靠性和稳定性方面得到回报。 API 也不太可能更改,而网页和 HTML 定位器经常更改并需要您更新测试框架。

在测试的任何时候使用 WebDriver 登录到 third-party 站点都会增加测试失败的风险,因为这会使测试时间更长。一般的经验法则是,时间越长的测试越脆弱且不可靠。

符合 W3C 标准的 WebDriver 实现还使用 WebDriver 属性 注释导航器对象,以便可以减轻拒绝服务攻击。

您只需等待一段时间即可。

driver.implicitly_wait(5)
print(driver.current_url)

要在特定搜索中点击随机视频后获得当前 URL,current_url 是唯一的方法。

您得到上一个的原因URL可能是页面未加载,您可以通过比较页面标题来检查页面加载

例如:

expectedURL = "demo class"
actualURL=driver.title
assert expectedURL == actualURL

如果断言给你 true 那么你可能有命令获取当前 URL

driver.current_url