我怎么知道,有没有文字。我用了这段代码:
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'对象不可调用
答案 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
这种方法足够慢,但是最可靠的