我想在其搜索栏中发布/请求某些内容后获取任何站点的新生成的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,这使我代码更通用。
答案 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)