目前有一个gbox帐户,收件箱中没有电子邮件。我希望能够显示包含当前电子邮件数量的弹出窗口。如果没有电子邮件,则不会显示任何消息。
所以我选择使用Explicit Waits& Xpath做到这一点。根据我的理解,这允许我定义一个时间段(比如10秒),然后每500毫秒,代码将查询并检查元素是否包含正确的文本,按照下面函数的第二个参数指定
SELECT (DAYNAME(NOW()) = "monday", "ARE EQUAL", "ARE NOT EQUAL")
xpath位置是收件箱按钮的xpath。它的值会发生变化。 (如果您愿意,可以在自己的浏览器中验证这一点)
我实际上是第一次运行它(第一次运行它,我发布后,不要问为什么)并得到此错误代码:
wait = WebDriverWait(driver, 10)
wait.until(EC.element_to_be_present_in_element((By.XPATH, "//*[@id=':3s']/div/div[1]/span/a/"), 'Inbox (1)'))
AttributeError:'module'对象没有属性'element_to_be_present_in_element'
实施后:
Traceback (most recent call last):
File "C:/Users/SG/Desktop/Report/Web_2.py", line 47, in <module>
wait.until(EC.element_to_be_present_in_element((By.XPATH, "//*[@id=':3s']/div/div[1]/span/a/"), 'Inbox (1)'))
我在编译时仍然遇到此错误:
wait.until(EC.presence_of_element_located((By.XPATH, "//*[@id=':3s']/div/div[1]/span/a[text()[contains(.,'Inbox (1)')]]")))
该页面有1封电子邮件,因此它应该有效,不知道为什么不是。
答案 0 :(得分:1)
您应该使用:
import tkinter as tk
import math
class SampleApp(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
self.canvas = tk.Canvas(width=400, height=400)
self.canvas.pack(fill="both", expand=True)
def _create_token(self, coord, color):
'''Create a token at the given coordinate in the given color'''
(x,y) = coord
self.canvas.create_oval(x-5, y-5, x+5, y+5,
outline=color, fill=color, tags="token")
def create(self, xA, yA, xB, yB, d=10):
self._create_token((xA, yA), "white")
self._create_token((xB, yB), "pink")
t = math.atan2(yB - yA, xB - xA)
xC = (xA + xB)/2 + d * math.sin(t)
yC = (yA + yB)/2 - d * math.cos(t)
xD = (xA + xB)/2 - d * math.sin(t)
yD = (yA + yB)/2 + d * math.cos(t)
self.canvas.create_line((xA, yA), (xC, yC), (xB, yB), smooth=True)
self.canvas.create_line((xA, yA), (xD, yD), (xB, yB), smooth=True, fill="red")
if __name__ == "__main__":
app = SampleApp()
app.create(100, 100, 300, 250)
app.mainloop()
在selenium-python doc中,没有方法wait.until(EC.presence_of_element_located((By.XPATH, "//*[@id=':3s']/div/div[1]/span/a"))
来检查页面中是否有任何预期的元素,但是文档引用方法element_to_be_present_in_element
。