Python:在一定时间内,每秒打印元素的文本

2024-04-20 14:42:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我在每秒打印一个在应用程序(android appium)中刷新的元素时遇到问题。你知道吗

我有一个应用程序,生成一个文本每秒,我需要打印60秒的信息。你知道吗

我试过使用WebDriver等等我也试过了时间。睡眠,甚至线程计时器但这需要一个函数调用,因为我是初学者,我有一个pytest嵌套函数的问题

使用计时器:

def testSignal(i):
         dbm = self.driver.find_element_by_id("com.ubnt.usurvey:id/vSignal")
         print(dbm.text)
         sys.stdout.write(str(i) + '\r')
         sys.stdout.flush()
         i += 1
         threading.Timer(1, testSignal, [i]).start()

使用WebDriverWait:

wait = WebDriverWait(self.driver, 60, poll_frequency=1)
dbm = wait.until(EC.presence_of_element_located((By.ID,"com.ubnt.usurvey:id/vSignal")))
text = dbm.text
print(text)

使用时间。睡眠地址:

dbm = self.driver.find_element_by_id("com.ubnt.usurvey:id/vSignal")
text = dbm.text
print(text)
time.sleep(60)

我是这个新的,我有问题,循环打印的基础上搜索一个元素(后重新加载)。你知道吗


Tags: textselfcomid应用程序元素driver时间
1条回答
网友
1楼 · 发布于 2024-04-20 14:42:38

我不明白你的代码,但我认为这将工作。你知道吗

dbm = self.driver.find_element_by_id("com.ubnt.usurvey:id/vSignal")
while True:
    text = None
    try:
        text = dbm.text
    except:
        pass
    if not text:
        break
    print(text)
    time.sleep(1)

如果您想通过CTRL+C(KeyboardInterrupt)停止它,并且不想停止或崩溃代码,您可以添加另一个try

dbm = self.driver.find_element_by_id("com.ubnt.usurvey:id/vSignal")
try:
    while True:
        text = None
        try:
            text = dbm.text
        except:
            pass
        if not text:
            break
        print(text)
        time.sleep(1)
except KeyboardInterrupt:
    print("Loop stopped in a controlled manner.")

相关问题 更多 >