1、原本代码如下如所示:
代码说明:使用显性等待,作用是,当这个元素出现时,点击,跳转到另一个页面
class IndexPage:
invert_localtor=("xpath",'(//a[@class="btn btn-special"])[1]')
def __init__(self,browser):
self.browser=browser
'''等待元素出现'''
def wait_clickable(self,browser, locator):
el = WebDriverWait(browser, 10, poll_frequency=0.3).until(ec.presence_of_all_elements_located(locator))
return el
def click_pass(self):
'''点击投标后,在投标详情页面'''
t=self.wait_clickable(self.browser,self.invert_localtor).click()
报错:test_invest_error - AttributeError: 'list' object has no attribute 'click',(实际上就是 click_pass,因为test_invest_error方法调用该方法,没有贴代码)
思考:为什么是list,明明是单个元素点击?
调试:在wait_clickable方法中,print(el)
结果:[webElement:xxxxxxxx],说明是list形式打印。
调试2:所以把return el换成el[0],
结果:运行正确,仔细看,原来until(ec.presence_of_all_elements_located(locator))方法调用错误,不小心选择的是直到所有元素出现,应该是【presence_of_element_located】
!!!!!!自己把自己坑了!!!!!!!!!!!!!!!!!!!!!!!!!