1. 使用by_xpath 代替
s='立即注冊(cè)'
driver.find_element(By.XPATH,"http://*[@text='%s']"%s)
可以通過這種方式間接變成 by_name 的方法志膀, 而且用法變化不大战惊,封裝好后的方法:
def get_element_by_text(self,text):
? ?try:
? ?????????WebDriverWait(self.driver,5,0.5).until(lambdadriver:driver.find_element(By.XPATH,"http://*[@text='%s']"%text).is_displayed())
? ? ? ? ? ?return ?self.driver.find_element(By.XPATH,"http://*[@text='%s']"%text)
????except:
????????print(u"%s 頁面中未能找到 %s 元素"%(self, text))
2.如果代碼中已經(jīng)使用了by_name 的方法碟联,可以替換成 xpath
因?yàn)槲沂褂昧藀o的設(shè)計(jì)模式擎勘,所有的基礎(chǔ)方法都在Object_base 里面重新封裝了的,所以我只需要修改封裝方法即可?
這是我之前封裝的方法,這里使用(By.name)時(shí)會(huì)報(bào)錯(cuò)
修改后:
這里先看傳入的loc是否是 name 如果是 就重新修改成xpath 方法。
3.轉(zhuǎn)載自博客?http://blog.csdn.net/wuyepiaoxue789/article/details/78411170
通過修改 driver.js 文件來重新使用by_name 功能(由于這里我并沒有成功實(shí)現(xiàn),所以僅供大家參考)