【问题标题】:python selenium how best to detect blinking text?python selenium 如何最好地检测闪烁的文本?
【发布时间】:2016-04-24 03:24:59
【问题描述】:

我正在尝试检测是否存在由该 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);
});

到目前为止,我得到了一个未命中的结果:

UpdateTaskCompleteElement = driver.find_element_by_xpath("/html/body/div[3]/h3/span")

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

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

我很想将 python 置于一个循环中并让它运行十次,但我认为这只会减少机会,我仍然不得不偶尔重新运行脚本 {这是一个很长的脚本 :( } .

【问题讨论】:

  • 您是否需要检查它实际上是在闪烁还是只获取底层文本而不管可见性如何?..
  • 只是底层文本,不管可见性如何。

标签: jquery python selenium


【解决方案1】:

在这种情况下,更好的方法是 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 文本。

【讨论】:

    【解决方案2】:

    【讨论】:

    • 我在查找元素时没有遇到任何问题,只是文本有时为空。由于它工作了大约一半时间,我假设它只是让它变空的眨眼(不可见)。
    【解决方案3】:

    由于答案相距甚远,没有其他人发布更好的内容,这是我的循环测试。我不是很喜欢这个,但它确实有效。

    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
    

    请发布更好的东西,谢谢!!!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-30
      • 2014-01-06
      • 1970-01-01
      • 2017-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多