python-3.x - 在某些请求后获取python 3中新生成的URL?
问题描述
我想在其搜索栏中发布/请求某些内容后获取任何站点的新生成的 URL,但面临一些困难。这是我的代码:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Firefox()
driver.get("https://www.amazon.com")
username = driver.find_element_by_name("field-keywords")
username.send_keys("samsung s8")
driver.find_element_by_name("field-keywords").send_keys(Keys.ENTER)
print(driver.current_url)
我希望它显示“ https://www.amazon.com/s/ref=nb_sb_noss_1?url=search-alias%3Daps&field-keywords=samsung+s8 ”作为输出,但它显示https://www.amazon.com /。
如果我替换这条线
driver.find_element_by_name("field-keywords").send_keys(Keys.ENTER)
用这条线
driver.find_element_by_class_name("nav-input").click()
它工作正常。我想在不使用 click() 函数的情况下获取新 URL,因为为此我还必须获取搜索按钮的 id/name 才能执行点击,而在“Keys.ENTER”的情况下,我只需要搜索栏的 id,这使我的代码更通用。
解决方案
当您使用 Firefox 驱动程序时,它会显示https://www.amazon.com,因为 Firefox 需要时间加载整个内容,因此当前的 Url 会被打印出来
这适用于我身边的 chrome 驱动程序:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome('/usr/bin/chromedriver')
driver.get("https://www.amazon.com")
username = driver.find_element_by_name("field-keywords")
username.send_keys("samsung s8")
username.send_keys(Keys.ENTER)
print(driver.current_url)
使用 Firefox 驱动程序,为了显示当前 url,我使用 time 模块让它休眠了几秒钟,它工作正常
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
driver = webdriver.Firefox()
driver.get("https://www.amazon.com")
username = driver.find_element_by_name("field-keywords")
username.send_keys("samsung s8")
username.send_keys(Keys.ENTER)
time.sleep(10)
print(driver.current_url)
推荐阅读
- rundeck - Rundeck - 用户组源插件 - Java 插件类型
- reactjs - 如何在下一个选项卡中打开存储在 Firebase 存储中的 pdf 文件
- xml - xpath 将每个后代拉到嵌套目标标记旁边
- android - 获取任何视频的纵横比
- c++ - C ++:围绕原点旋转点,但输出点在一定程度上不正确
- c# - C# RestClient 调用 magento api 返回 401 签名无效
- ios - 如何在 iOS 中创建添加新联系人,例如 whatsapp
- java - 从 Java 中的 ArrayList 中获取 names()
- linux - 使用 mailx 发送邮件正文和附件 - Linux
- r - 在 R 中使用 igraph 计算属性类之间的网络统计信息