问题描述
我正在阅读客户名称列表,并使用它们来查找元素。
在阅读列表之前,我可以在对名称进行硬编码时确认其有效,
daTarow = driver.find_element_by_xpath("//span[contains(text(),'Acme Anvil Company')]")
但是当我阅读客户列表并像这样使用它时,会出现NoSuchElement异常。我知道我将名称输入到客户变量中,因为打印语句可以确认它。
for customer in customerlist:
print("START OF DATA FOR CUSTOMER: " +customer)
daTarow = driver.find_element_by_xpath("//span[contains(text(),'"+customer+"')]")
我的“ + customer +”部分是否有问题?我已经尝试了多种方法。
解决方法
可能是列表元素,例如客户,包括前导或尾随空格。因此,当您通过print()
语句打印时,您将对其进行监督。
但是当您将xpath用作:
datarow = driver.find_element_by_xpath("//span[contains(text(),'"+customer+"')]")
这些空格开始起作用,找不到匹配项。
解决方案
您可以使用以下解决方案:
datarow = driver.find_element_by_xpath("//span[contains(.,'"+customer+"')]")
理想情况下,要找到需要为visibility_of_element_located()
引出WebDriverWait的元素,可以使用以下Locator Strategy:
datarow = WebDriverWait(driver,20).until(EC.visibility_of_element_located((By.XPATH,"//span[contains(.,'"+customer+"')]")))