Столкновение с «TypeError: объект типа« WebElement »не имеет len ()» при выполнении приведенного ниже сценария - PullRequest
0 голосов
/ 02 июля 2018

Я пытаюсь проверить, равен ли продукт 12, используя функцию assert equal. Пожалуйста, проверьте приведенный ниже скрипт, который я пробовал:

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 голосов
/ 02 июля 2018

Заменить это:

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 вернет только один элемент, если найден.

0 голосов
/ 02 июля 2018

Похоже, вы используете 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...