Python Selenium: Block-Title is not properly verified. (Magento Cloud)
The relevant HTML in text format would have helped to construct a canonical answer. However, you were close. To assert the block title within the profile page you have to you need to induce WebDriverWait for the visibility_of_element_located()
and you can use the following Locator Strategies:
Using
CSS_SELECTOR
andtext
attribute:#Verify My Account driver.get("https:my-url.de") try: self.assertEqual("Account Information", WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "main.page-main#maincontent div.block-dashboard-info > div.block-title strong"))).text) except (TimeoutException, AssertionError) as e: self.verificationErrors.append(str(e))
Using
XPATH
andget_attribute("innerHTML")
:#Verify My Account driver.get("https:my-url.de") try: self.assertEqual("Account Information", WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//main[@class='page-main' and @id='maincontent']//div[@class='block-dashboard-info']/div[@class='block-title']//strong"))).get_attribute("innerHTML")) except (TimeoutException, AssertionError) as e: self.verificationErrors.append(str(e))
Note : You have to add the following imports :
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
Please try webdriver wait for visibility of element so the element will get time to load in dom properly, it will prevent it from to become stale element.
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec
driver.get("https:my-url.de")
wait = WebDriverWait(driver, 60)
try:
accountInfo = wait.until(ec.visibility_of_element_located((By.XPATH, "//strong[.='Account Information']")))
self.assertEqual("Account Information", accountInfo.text)
except AssertionError as e: self.verificationErrors.append(str(e))
self.assertEqual("Account Information", driver.find_element_by_xpath("(.//*[normalize-space(text()) and normalize-space(.)='My Account'])[4]/following::strong[1]").text)