希望某人可以帮助新手解释下面的代码差异。
使用Python运行Selenium,并使用XPath和click()浏览页面。
xpath = '//*[@id="blahblah"]'
date = driver.find_element_by_xpath(xpath)
date.click()
date.send_keys('todaysdate')
xpath = '//*[@id="blahblah"]'
date = driver.find_element_by_xpath(xpath).click()
date.send_keys('todaysdate')
AttributeError: 'NoneType' object has no attribute 'send_keys'
示例之间有什么区别?
答案 0 :(得分:3)
仅当date.click()
返回日期时,您的代码才有效。事实并非如此(这很不寻常)。就目前而言,click()
已执行,但返回了None
,因此将send_keys设置为None的尝试失败。
答案 1 :(得分:3)
它不起作用,因为您试图将click()
的返回值保存在日期中。 'click()'不返回任何内容,也就是None
,因此,当您尝试对此NoneType对象调用send_keys
时,会出现属性错误。
如果要在创建对象后调用一个对象的多个函数,最好将其保存在一个变量中,然后一个接一个地调用这些函数,而不是将所有的函数链接在一起并使代码成为调试的噩梦,更不用说在某些情况下牺牲可读性了。
这仍然是主观的,在某些情况下,将方法调用链接在一起是可行的方法(例如,节省一点内存)。但是,这种情况很少见。