2015-06-09 85 views
1

我嘗試瀏覽網頁,以便下載一些CSV文件中。問題是,有一個下拉菜單,每次你改變它的頁面重新加載。所以即時嘗試使用硒以解決此問題。蟒蛇 - 硒變化框架不工作

該網頁具有2幀。在名稱=「左」框架下拉列表中。所以我用下面的代碼來訪問框架:

from selenium import webdriver 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.common.exceptions import WebDriverException 

print os.path.abspath(os.path.join(os.path.dirname(__file__), '..', 'driver')+'\\chromedriver.exe') 
chromedriver_path =os.path.abspath(os.path.join(os.path.dirname(__file__), '..', 'driver')+'\\chromedriver.exe') 
driver = webdriver.Chrome(chromedriver_path) 
driver.implicitly_wait(10) 
driver.get(url2) 
frames = [] 
frames = driver.find_elements_by_tag_name('frame') 
for frame in frames: 
    print frame.get_attribute('name') 

driver.switch_to_frame('left') 

elements = [] 
elements = driver.find_elements_by_xpath('//select') 

print elements 

可悲的輸出如下:

left 
right 
[] 

的框架名稱被發現,但是當我做搜索的組合框的它不工作。

主框架

<!DOCTYPE html> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
</head> 
<frameset cols="600,*" id="frMain" name="frMain"> 
    <frame id="left" name="left" src=""> 
    <frame id="right" name="right" src="" frameborder="0" noresize="noresize" scrolling="no"> 
</frameset> 
</html> 

左幀

<!DOCTYPE html> 
<html> 
<head> 
</head> 
<body onload="Init()"> 
<table border="0" cellspacing="0" cellpadding="0" style="width: 100%"> 
<tr align="left" valign="top"> 
    <td>&nbsp;</td> 
    <td> 
     <tr> 
     <td colspan="1"> 
      <select id="ic" name="ic" onchange="EnablePeriod();Open()" style="width: 240px;"> 
       <option></option> 
       <option></option> 
+0

不是100%,但我認爲這個問題可能與具有瀏覽'frameset'元素以查找單獨的幀。我自己以前也沒有遇到過這一點,但希望在導航'framesets'一個小小的研究 - >「框架」可以幫助 –

+0

進行仔細的檢查:如果添加什麼'time.sleep(10);'切換到表格後並在搜索'select'元素之前? – alecxe

+0

奇怪的是足夠多的睡眠(2)工作,但是driver.implicitly_wait(10)犯規。感謝@alecxe! 感謝大家對你的幫助! – GriffiN

回答

0

下應該努力 - 某些

leftframe = driver.find_element_by_name('left') 
driver.switch_to.frame(leftframe) 

elements = [] 
elements = driver.find_elements_by_xpath('//select') 

print elements