Skip to content Skip to sidebar Skip to footer

What Is The Difference Here That Prevents This From Working?

I'm reading a list of customer names and using each to find an element. Before reading the list, I make can confirm this works when I hard-code the name, datarow = driver.find_

Solution 1:

Possibly the list elements e.g. customer, includes leading or trailing white spaces. So when you print through print() statement you are overseeing those.

But when you use the as:

datarow = driver.find_element_by_xpath("//span[contains(text(),'"+customer+"')]")

Those whitespaces comes into play and no matches are found.


Solution

You can use the following solution:

datarow = driver.find_element_by_xpath("//span[contains(.,'"+customer+"')]")

Ideally, to locate the element you need to induce WebDriverWait for the visibility_of_element_located() and you can use the following Locator Strategy:

datarow = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//span[contains(.,'"+customer+"')]")))

Post a Comment for "What Is The Difference Here That Prevents This From Working?"