在请求后获取python 3中新生成的URL?

时间:2018-11-02 19:51:47

标签: python-3.x selenium-webdriver

我想在其搜索栏中发布/请求某些内容后获取任何站点的新生成的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 /名称才能执行点击,而在“ Keys.ENTER”的情况下,我只需要搜索栏的ID,这使我代码更通用。

1 个答案:

答案 0 :(得分:0)

当您使用Firefox驱动程序时,它会显示https://www.amazon.com,因为firefox花费了时间加载整个内容,因此当前的网址会被打印

这在我身边的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驱动程序,要显示当前网址,我使用时间模块使其休眠了一秒钟,并且效果很好

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)