我正在使用硒,我正在尝试将驱动程序更改为打开的新页面(相同的标签) driver.switch_to似乎不起作用,因为我认为在打开新窗口时会使用它 driver.current_url似乎也不起作用,因为它给了我上一页的网址,而我似乎无法弄清楚如何获取当前页的网址
此处提供代码:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver.get("https://www.youtube.com")
searchBar = driver.find_element_by_name("search_query")
searchBar.send_keys("unbox therapy")
searchBar.send_keys(Keys.ENTER)
print(driver.current_url)
这仍然返回https://www.youtube.com 我需要看起来应该像的搜索查询 https://www.youtube.com/results?search_query=unbox+therapy
答案 0 :(得分:2)
您应该在添加一些等待时间之前
driver.current_url
由于需要花费一些时间才能完全加载该站点。加载时间还取决于Internet连接速度和其他因素。对我来说,它无需等待就可以工作。
import time
from selenium.webdriver.common.keys import Keys
from selenium import webdriver
driver = webdriver.Chrome("/home/teknath/Desktop/chromedriver")
driver.get("https://www.youtube.com")
searchBar = driver.find_element_by_name("search_query")
searchBar.send_keys("unbox therapy")
searchBar.send_keys(Keys.ENTER)
time.sleep(5)
print(driver.current_url)
答案 1 :(得分:0)
就像Tek Nath所说,您可以增加等待时间,但是您也可以这样做。
searchTerm = "unbox therapy"
replaceSpaceWithPlus(searchTerm)
driver.get("https://www.youtube.com/results?search_query=" + searchTerm)
答案 2 :(得分:0)
@TekNath答案是正确的方向,几乎是完美的。但是,我建议避免在代码中使用 time.sleep(5)
:
time.sleep(secs)
在给定的秒数内暂停当前线程的执行。该参数可以是浮点数,以指示更精确的睡眠时间。实际的暂停时间可能少于请求的暂停时间,因为任何捕获到的信号都会在执行该信号的捕获例程后终止sleep()。另外,由于系统中其他活动的安排,暂停时间可能比请求的时间长任意数量。
您可以在How to sleep webdriver in python for milliseconds
中找到详细的讨论或者,您可以为title_contains()
引入 WebDriverWait ,并可以使用以下Locator Strategy:
代码块:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
options = webdriver.ChromeOptions()
options.add_argument("start-maximized")
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
driver = webdriver.Chrome(options=options, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
driver.get("https://www.youtube.com/")
searchBar = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input#search")))
searchBar.send_keys("unbox therapy")
searchBar.send_keys(Keys.ENTER)
WebDriverWait(driver, 10).until(EC.title_contains("unbox therapy"))
print(driver.current_url)
控制台输出:
https://www.youtube.com/results?search_query=unbox+therapy