如上圖,左邊是未挑選區,右邊是已挑選區
一次只能選擇一個到右邊
我的需求是點選左邊的選項後,點選「轉EXCEL」按鈕下載
但現在下面的任何一個元素都會找不到
以下是我的code
from selenium import webdriver
import time
PATH = "C:/Users/USER/Desktop/chromedriver.exe"
driver = webdriver.Chrome(PATH)
driver.get("http://.........")
#登入網站
USERID = driver.find_element_by_name("userid")
USERID.send_keys("XXXXX")
USERPWD = driver.find_element_by_name("passwd")
USERPWD.send_keys("XXXXX")
driver.find_element_by_xpath('//*[@id="logIn"]').click()
#等待網站載入
driver.implicitly_wait(6)
#點選記錄查詢
driver.find_element_by_xpath('/html/body/table/tbody/tr[2]/td/table/tbody/tr/td[1]/table/tbody/tr/td/div/table[2]/tbody/tr[1]/td').click()
#點選行車紀錄
driver.find_element_by_xpath('/html/body/table/tbody/tr[2]/td/table/tbody/tr/td[1]/table/tbody/tr/td/div/table[2]/tbody/tr[2]/td/table/tbody/tr[1]/td/span').click()
time.sleep(5)
#點選左邊選項
driver.find_element_by_xpath('/html/body/table/tbody[2]/tr/td/table/tbody/tr[2]/td[1]/div/div[1]/a').click()
錯誤訊息如下
no such element: Unable to locate element: {"method":"xpath","selector":"/html/body/table/tbody[2]/tr/td/table/tbody/tr[2]/td[1]/div/div[1]/a"}
(Session info: chrome=100.0.4896.127)
且div裡每一個選項ID都相同..
未被選到的選項會在lcode底下
選擇後的選項會在rcode底下
再請大家協助~~謝謝!!
(我怎麼感覺在 FB 有回覆過類似的文?
從你第一張截圖可以看到,你想抓取的元素在 iframe 底下,你需要先將 driver 切換到裡面,才能抓到裡面的元素。
語法:driver.switch_to.frame()
例如:driver.switch_to.frame("iframe_action")
或 driver.switch_to.frame(0)
你試試看吧~
看錯誤訊息是該Element沒辦法被selenium定位,推測原因:Element的大小為(0,0),因此無法被定位
試試看抓上一層div這樣行不行
#抓出所有左邊選項
left_elements = driver.find_elements_by_xpath('//*[@id='lcode']/div')
#點擊第一個選項
left_elements[0].click()
#抓出所有右邊選項
right_elements = driver.find_elements_by_xpath('//*[@id='rcode']/div')
#點擊第一個選項
right_elements[0].click()
用這個方法還是不行耶
他會跳出錯誤訊息
Traceback (most recent call last):
File "C:\Users\USER\Desktop\PythonProj\迷你龐德.py", line 40, in <module>
left_elements[0].click()
IndexError: list index out of range
根據上面的錯誤訊息,看起來當下左邊選項可能是空的,有先設個sleep等待資料出現嗎?
有,time.sleep(60)
但她還是無法查找到..
或許是你等 selenium 的秒數不夠,可以用用看 這個方法 裡面提到的 5-1 去做等待,另外也把秒數拉長一些看看