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> </td>
<td>
<tr>
<td colspan="1">
<select id="ic" name="ic" onchange="EnablePeriod();Open()" style="width: 240px;">
<option></option>
<option></option>
不是100%,但我認爲這個問題可能與具有瀏覽'frameset'元素以查找單獨的幀。我自己以前也沒有遇到過這一點,但希望在導航'framesets'一個小小的研究 - >「框架」可以幫助 –
進行仔細的檢查:如果添加什麼'time.sleep(10);'切換到表格後並在搜索'select'元素之前? – alecxe
奇怪的是足夠多的睡眠(2)工作,但是driver.implicitly_wait(10)犯規。感謝@alecxe! 感謝大家對你的幫助! – GriffiN