emailcontent = []
def getEmails(self):
self.browser.get("https://outlook.live.com/mail/0/inbox")
time.sleep(3)
content = self.browser.find_elements_by_css_selector("._2ZDUqsleGa-jar5wAYvVzV")
for c in content:
c.click() # opens the email
content = self.browser.find_element_by_dir("Itr").text
# div dir="Itr" only common tag for email contents
emailcontent.append(content)
getEmails()
txt = ""
for a in emailcontent:
txt += "{:<30} n".format(a)
with open("new.txt", "a") as output:
output.write(txt)
os.startfile('new.txt')
我有一个代码如上所述,前面部分代码基本上进入我的hotmail/outlook帐户,没有任何问题。我希望这部分打开每一个电子邮件和保存内容到文本文件,但它不会发生。唯一常见的电子邮件内容标签是div dir=" it"我不知道如何找到元素…一个接一个。也许我需要使用循环,但我做不到。有人想帮忙吗?
这里
content = self.browser.find_elements_by_css_selector("._2ZDUqsleGa-jar5wAYvVzV")
你得改进定位器。否则,第一个匹配元素不是您想要的。
用这个代替:
content = self.browser.find_elements_by_css_selector("div._2ZDUqsleGa-jar5wAYvVzV")
在扩展每个电子邮件后,您可以使用div.rps_b62
css_selector检索内容。
所以你的代码可以是:
content = self.browser.find_elements_by_css_selector("div._2ZDUqsleGa-jar5wAYvVzV")
for c in content:
c.click()
time.sleep(1)
content = self.browser.find_element_by_css_selector("div.rps_b62").text
emailcontent.append(content)
获取内容并将其追加到list中应该在for
循环中完成。
它也应该是一个延迟,让内容正确打开。
一如既往。