Selenium没有打印出正确的URL

时间:2017-10-09 20:28:37

标签: python selenium

我现在正在使用硒,但我似乎无法打印出正确的网址。

import time
from selenium import webdriver

driver = webdriver.Firefox()
home_page = ''
driver.get(home_page)


time.sleep(15)
for i in range(1,9):
    listing_page = driver.find_element_by_xpath('//*[@id="m_property_lst_cnt_realtor_more_'+str(i)+'"]').click()
    realtor_url = driver.find_element_by_xpath('//*[@id="lblMediaLinks"]/a').click()
    print(driver.current_url)
    driver.get(home_page)
    time.sleep(5)

我需要在selenium点击realtor_url中的元素时打开的网页的网址。它会打印出来自listing_page的第一次点击的URL。

(注意:从realtor_url打开的网页是一个完全不同的网站,如果有帮助的话)

2 个答案:

答案 0 :(得分:0)

您需要在打印URL之前切换到新打开的窗口,然后关闭新打开的窗口并切换回原始窗口。

// do the click that opens another window
WebDriverWait(driver, 10).until(lambda d: len(d.window_handles) == 2)
driver.switch_to_window(driver.window_handles[1])
print(driver.current_url)
driver.close()
driver.switch_to_window(driver.window_handles[0])

其他一些事情......

  1. .click()返回void,即没有任何内容,因此listing_pagerealtor_url个变量中没有任何内容存储。

  2. sleep()是一种不好的做法。不要使用它。谷歌它找出细节的原因。将sleep()替换为相关的WebDriverWait

答案 1 :(得分:0)

我相信您需要更改窗口的"焦点"才能打印正确的网址。当前窗口处理程序可能指向前一次单击而未将焦点更改为新窗口。 尝试并改变"窗口处理程序"。每个打开的新窗口都有一个处理程序。

我希望这会有所帮助。 window_handles或此Handle multiple window in Python

编辑:

以下内容应该会带您进入最新的打开窗口。

driver.switch_to_window(driver.window_handles[-1])