Python 板


LINE

最近在學習selenium webdriver尋找元素時 常需要重複打 find_element_by_id或xpath或name等等.... 如是還要加上explicit wait時 就會讓code變得又臭又常 剛好在逛論壇時看到有個網友PO了一個自訂function ====== from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support.select import Select from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By from abc import abstractmethod class LocatorMode: XPATH = "xpath" CSS_SELECTOR = "cssSelector" NAME = "name" ID = "id" TAG_NAME = "tagName" class BasePage(object): def __init__(self, driver): self.driver = driver def wait_for_element_visibility(self, waitTime, locatorMode, Locator): element = None if locatorMode == LocatorMode.ID: element = WebDriverWait(self.driver, waitTime).\ until(EC.visibility_of_element_located((By.ID, Locator))) elif locatorMode == LocatorMode.NAME: element = WebDriverWait(self.driver, waitTime).\ until(EC.visibility_of_element_located((By.NAME, Locator))) elif locatorMode == LocatorMode.XPATH: element = WebDriverWait(self.driver, waitTime).\ until(EC.visibility_of_element_located((By.XPATH, Locator))) elif locatorMode == LocatorMode.CSS_SELECTOR: element = WebDriverWait(self.driver, waitTime).\ until(EC.visibility_of_element_located((By.CSS_SELECTOR, Locator))) else: raise Exception("Unsupported locator strategy.") return element ===== 我試了好多次都沒辦法成功呼叫這個function 我現在希望的狀況是 1.用tagname來找element,且假設網頁中element的tagname="tr" 2.EC是在visibility_of_element_located的狀況 3.等待時間是10秒 所以我自己試了一下 element = BasePage.wait_for_element_visibility(10,tagName,"tr") element.click() 但如果用這樣的input執行的話 系統會返回: name 'tagName' is not defined 要是換成 element = BasePage.wait_for_element_visibility(10,"tagName","tr") element.click() 系統會返回: wait_for_element_visibility() missing 1 required positional argument: 'Locator' 請問我要怎麼輸入括號內的變數,才能成功執行BasePage裡面的function呢? --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.242.142.44
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Python/M.1559406349.A.DFF.html
1F:推 CaptainH: 你跳關了,先把語言本身的語法基礎弄懂再來搞爬蟲之類 06/02 02:58
2F:→ CaptainH: 的 06/02 02:58
3F:推 jiyu520: 基本觀念走一次 06/02 07:28
4F:推 art1: 似乎是要多用一層小括號把你的 3 個引數包起來 06/02 07:32
5F:推 art1: 又好像是呼叫 BasePage 時需要先加一個 driver 的引數? 06/02 08:11
6F:推 sean50301: 你的BasePage沒有建出instance 所以少傳一個self 06/02 10:49
7F:→ vi000246: 同一樓 你要先把變數、類別這章再讀過一遍 06/02 10:51
8F:→ vi000246: 看完後你就會發現 要傳進去的是LocatorMode裡的member 06/02 10:52
9F:→ vi000246: 然後你可能會遇到sean大提到的問題 把類別這章讀熟吧 06/02 10:56
10F:推 art1: 這種少了第一個參數,但錯誤訊息卻是說你少了最後一個參數 06/02 15:05
11F:→ art1: 對類別不熟的人就會被誤導了 06/02 15:06







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:WOW站內搜尋

TOP