【发布时间】:2019-02-02 23:01:05
【问题描述】:
如何解决错误AttributeError: 'NoneType' object has no attribute 'click'?它在self.home.get_you_button().click() 中失败了。当我不创建页面对象类时它工作正常......它点击 You 按钮没有任何错误,但使用 POM 它失败了。网址是https://huew.co/
代码试验:
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.wait import WebDriverWait
class HomePage():
def __init__(self,driver):
self.driver = driver
def wait_for_home_page_to_load(self):
wait =WebDriverWait(self.driver,30)
wait.until(expected_conditions.visibility_of(self.driver.find_element_by_tag_name('html')))
def get_you_button(self):
try:
element = self.driver.find_element_by_xpath("//div[@class='desktop-public-header']/a[@ng-controller='UserNavigationInteractionCtrl'][6]")
except:
return None
【问题讨论】:
-
那么你抓到的
Exception是什么? -
你能发布你的html吗?
-
在 any
Exception的情况下,您的get_you_button()函数显式返回None。是抓一只吗?如果有,是哪一个?这确实应该包含在问题中。 -
那么当该函数返回
None并且您尝试在None上调用.click()时,您期望会发生什么?那确实会提高您遇到的AttributeError。您是否调试了代码以确保这不是正在发生的事情?同样,所有这些信息都应包含在问题中。 -
@AvinavDas 即使没有引发异常,您的
get_you_button方法也不会显式返回任何内容,这意味着它仍会返回None。
标签: python python-3.x selenium selenium-webdriver webdriverwait