文本是否存在(Selenium,Python)

时间:2017-07-30 15:13:53

标签: python selenium

我怎么知道,有没有文字。我用了这段代码:

pricelist = driver.find_elements_by_xpath(".//*[@id='scroll']/div[2]/div/div[2]/div")
if EC.text_to_be_present_in_element(By.XPATH(".//*[@id='scroll']/div[2]/div/div[2]/div[1]")):
    price = pricelist[1].text
elif EC.text_to_be_present_in_element(By.XPATH(".//*[@id='scroll']/div[2]/div/div[2]/div[2]")):
    price = pricelist[2].text
else:
    price = pricelist[3].text

问题:

  

TypeError:' str'对象不可调用

3 个答案:

答案 0 :(得分:1)

您可以使用Xpath检查元素中的文本长度。请参阅下面的代码。

price = driver.find_element_by_xpath(".//*[@id='scroll']/div[2]/div/div[2]/div[string-length(text()) > 1]").text

您可以更改xpath中的文本长度,例如/div[string-length(text()) > 10],以查找包含10个以上字符的元素。

答案 1 :(得分:1)

By.XPATH不是方法,而是简单的字符串。正确使用

EC.text_to_be_present_in_element((By.XPATH, xpath_expression)))

如果要匹配包含文本的元素,请使用[text()]谓词:

".//*[@id='scroll']/div[2]/div/div[2]/div[text()]"

答案 2 :(得分:0)

我使用了另一种方法:

pricelist = driver.find_elements_by_xpath(".//*[@id='scroll']/div[%d]/div/div[2]/div" %num)
for prc in pricelist:
    if len(prc.text) < 10 and len(prc.text) > 0:
        price = prc.text

这种方法足够慢,但是最可靠的