-1

我正在阅读客户名称列表并使用每个名称查找一个元素。

在阅读列表之前,我可以在硬编码名称时确认它是否有效,

    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+ "' 部分有问题吗?我已经尝试了很多不同的方法。

4

1 回答 1

1

可能的列表元素,例如customer,包括前导或尾随空格。因此,当您通过声明打印时,print()您正在监督这些。

但是当您将用作:

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

这些空格开始发挥作用,找不到匹配项。


解决方案

您可以使用以下解决方案:

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

理想情况下,要定位您需要诱导WebDriverWait的元素visibility_of_element_located(),您可以使用以下Locator Strategy

datarow = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//span[contains(.,'"+customer+"')]")))
于 2020-09-24T15:34:10.580 回答