1. 使用by_xpath 代替
s='立即注册'
driver.find_element(By.XPATH,"//*[@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,"//*[@text='%s']"%text).is_displayed())
return self.driver.find_element(By.XPATH,"//*[@text='%s']"%text)
except:
print(u"%s 页面中未能找到 %s 元素"%(self, text))
2.如果代码中已经使用了by_name 的方法,可以替换成 xpath
因为我使用了po的设计模式,所有的基础方法都在Object_base 里面重新封装了的,所以我只需要修改封装方法即可
这是我之前封装的方法,这里使用(By.name)时会报错
修改后:
这里先看传入的loc是否是 name 如果是 就重新修改成xpath 方法。
3.转载自博客 http://blog.csdn.net/wuyepiaoxue789/article/details/78411170
通过修改 driver.js 文件来重新使用by_name 功能(由于这里我并没有成功实现,所以仅供大家参考)