PythonSelenium如何最好地检测闪烁的文本?

2024-09-27 18:00:42 发布

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

我试图检测由这个jquery引起的闪烁的文本(不管可见性如何,底层文本):

    /* Blink thingy*/
$('.blink').each(function() {
    var elem = $(this);
    setInterval(function() {
        if (elem.css('visibility') == 'hidden') {
            elem.css('visibility', 'visible');
        } else {
            elem.css('visibility', 'hidden');
        }    
    }, 500);
});

到目前为止,我的结果是:

^{pr2}$

以及

UpdateTaskCompleteMessage = UpdateTaskCompleteElement.text
if UpdateTaskCompleteMessage == ExpectedUTCMessage:
     #Make a log entry
else:
     #Throw an error

在眨眼之间捕捉信息的最佳方法是什么? python或selenium中是否有一个函数可以解决这个问题?在

我一直想把python放在一个循环中,让它运行十次,但我认为这只会减少机会,我仍然需要偶尔重新运行脚本{这是一个很长的脚本:(})。在


Tags: 文本脚本iffunctionjquerycsselsehidden
3条回答

在这种情况下,更好的方法是wait for a specific element to have a specific text

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

wait = WebDriverWait(driver, 10)
wait.until(EC.text_to_be_present_in_element((By.XPATH, "/html/body/div[3]/h3/span"), ExpectedUTCMessage))

这将等待最多10秒每半秒检查元素中是否存在ExpectedUTCMessage文本。在

由于答案还很遥远,没有其他人发布更好的结果,这里是我的循环测试。我不太喜欢这个,但确实有用。在

ExpectedUTCMessage = "Whatever the message should be."
UpdateTaskCompleteElement = driver.find_element_by_xpath("/html/body/div[3]/h3/span")


BlinkDetectLoopPass = False
for BlinkChecknum in range(0,20): # I'm using 20 loops because I have seen as many as 9 failed attempts

    UpdateTaskCompleteMessage = UpdateTaskCompleteElement.text

    if UpdateTaskCompleteMessage == ExpectedUTCMessage:
        BlinkDetectLoopPass = True
        break
    else:
        #Just displaying the failed detections, don't really need this else
        print("\nUpdate Task Complete Message missed blink check #" + str(BlinkChecknum + 1) + ".\n")

if BlinkDetectLoopPass:
    #Success Handling
else:
    #Error Handling

请张贴任何更好的,谢谢!!!在

相关问题 更多 >

    热门问题