执行以下脚本时,面对“ TypeError:类型'WebElement'的对象没有len()”

时间:2018-07-02 05:22:33

标签: python selenium selenium-webdriver

我正在尝试使用断言等于函数来检查产品是否为12。请检查我尝试过的以下脚本:

def test_search(self):
    driver=self.driver
    driver.get("http://magento-demo.lexiconn.com/")
    driver.maximize_window()
    driver.find_element_by_xpath(".//*[@id='search']").send_keys("Bed & Bath")
    driver.find_element_by_xpath(".//*[@id='search_mini_form']/div[1]/button").click()
    lis = driver.find_element_by_xpath("//h2[@class='product-name'] / a")
    self.assertEqual(12,len(lis))

2 个答案:

答案 0 :(得分:1)

替换此:

lis = driver.find_element_by_xpath("//h2[@class='product-name']/a")  

收件人:

lis = driver.find_elements_by_xpath("//h2[@class='product-name']/a")  

请注意,find_elements将返回网络元素列表,其中find_element仅在找到时返回一个元素。

答案 1 :(得分:0)

看起来您正在使用driver.find_element_by_xpath而不是driver.find_elements_by_xpath。 您可能还想从

中取出空格
"//h2[@class='product-name'] / a"

我不认为这是有效的xpath,其中有空格。

-编辑- 那是有效的xpath,但是切换到find_elements_by_xpath对我有用-

driver = webdriver.Chrome(chrome_options = options, executable_path = driver_path)
driver.get('http://magento-demo.lexiconn.com/')
driver.find_element_by_xpath(".//*[@id='search']").send_keys("Bed & Bath")
driver.find_element_by_xpath(".//*[@id='search_mini_form']/div[1]/button").click()
lis = driver.find_elements_by_xpath("//h2[@class='product-name']/a")

print(len(lis))

输出9