我现在正在使用硒,但我似乎无法打印出正确的网址。
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打开的网页是一个完全不同的网站,如果有帮助的话)
答案 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])
其他一些事情......
.click()
返回void
,即没有任何内容,因此listing_page
或realtor_url
个变量中没有任何内容存储。
sleep()
是一种不好的做法。不要使用它。谷歌它找出细节的原因。将sleep()
替换为相关的WebDriverWait
。
答案 1 :(得分:0)
我相信您需要更改窗口的"焦点"才能打印正确的网址。当前窗口处理程序可能指向前一次单击而未将焦点更改为新窗口。 尝试并改变"窗口处理程序"。每个打开的新窗口都有一个处理程序。
我希望这会有所帮助。 window_handles或此Handle multiple window in Python
编辑:
以下内容应该会带您进入最新的打开窗口。
driver.switch_to_window(driver.window_handles[-1])