【问题标题】:repeat selenium command line重复硒命令行
【发布时间】:2020-09-13 19:45:06
【问题描述】:

美好的一天,我是编码新手,并创建了一个登录到指定网页的网络自动化脚本。登录后,我需要使用每秒显示/弹出数字的范围中的值。假设第一个数字是8.2165,后面的数字是8.2984。我使用下面一行打印了数字a = print(driver.find_element_by_id('spot').text)。如何打印第二个数字(8.2984),因为如果我键入 b = print(WebDriverWait(driver, 1).until(EC.visibility_of_element_located((By.ID, 'spot'))).text) 等待一秒钟以打印第二个数字,它仍然返回相同的数字8.2165

语句:: a = print('第一个数字') b = print('第二个数字')

如果 a= 300.0 且 b=6985 打印('真')

问题:: 如何循环遍历 Selenium Python 脚本中的语句?

【问题讨论】:

    标签: python selenium loops


    【解决方案1】:

    几件事:

    1. WebDriverWait(driver, 1).until(EC.visibility_of_element_located((By.ID, 'spot') 不会等待 1 秒...它实际上会等待 最多 1 秒以使元素可见。它每 250 毫秒轮询一次元素的 DOM,直到元素变得可见或超时。我认为您遇到的问题是,在第二次调用时,弹出窗口当前已启动,因此它符合等待条件,因此再次打印相同的数字。
    2. 第二个问题是您需要等待第一个弹出窗口消失,然后等待第二个弹出窗口出现。一种方法是等待第一个弹出窗口过时。过时的元素是不再附加到 DOM 的元素(它不再存在)。第一个弹出窗口将出现,然后当它消失时,它将变得陈旧或与 DOM 分离。为了等待元素过时,您必须获取对该元素的引用(将其存储在变量中),然后使用WebDriverWait 等待它过时。

    进入代码...

    # store the WebDriverWait instance in a variable for reuse
    wait = WebDriverWait(driver, 3)
    
    # wait for the first popup to appear
    popup = wait.until(EC.visibility_of_element_located((By.ID, 'spot')))
    # print the text
    print(popup.text)
    # wait for the first popup to disappear
    wait.until(EC.staleness_of(popup))
    
    # wait for the second popup to appear
    popup = wait.until(EC.visibility_of_element_located((By.ID, 'spot')))
    # print the text
    print(popup.text)
    # wait for the second popup to disappear
    wait.until(EC.staleness_of(popup))
    
    ... and so on
    

    如您所见,每个弹出窗口的代码都是相同的,因此可以根据需要循环。

    【讨论】:

    • 如果这个或任何其他答案有用,请点赞。找到问题的答案后,请将其标记为已接受,以免问题没有得到解答。
    • 嗨,JeffC,我已经尝试这种方法有一段时间了,但不起作用。我认为这是因为我没有正确写出我的问题。如果整个跨度已从 DOM 中拉出,陈旧似乎会起作用,但在这种情况下,只有跨度值会发生变化。在代码中,Popup 没有改变,popup.text 改变了。请告诉我我该如何纠正这个问题?当我输入 staleness_of(popup.text) 它返回错误:init str not enabled
    • @Moshe staleness_of(popup.text) 不在我上面的代码中。您需要将我的代码复制/粘贴到您的项目中并尝试运行它。
    猜你喜欢
    • 1970-01-01
    • 2010-12-05
    • 2014-03-14
    • 2016-12-03
    • 2020-06-24
    • 2010-11-23
    • 2013-05-27
    • 2018-04-06
    • 1970-01-01
    相关资源
    最近更新 更多