一旦通过Selenium和Python调用click()方法,控制台就会收到大量调试消息

2024-09-30 10:39:15 发布

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

我使用的是SeleniumFirefox,下面的代码生成了我需要的东西,但是在加载完成后,它生成了大量的调试消息。我做错什么了?在

    def count_list(self, busienss_seller_url):
    seller_url = busienss_seller_url
    driver.get(seller_url)
    while True:
        load_content = driver.find_element_by_xpath('/html/body/div[5]/div[3]/div/button')
        try:
            load_content.click()
            time.sleep(3)
        except:
            print('Finish loading...')
            break
    links = driver.find_elements_by_class_name("title-link")
    number_of_links = []
    for link in links:
        ad_links = link.get_attribute('href')
        number_of_links.append(ad_links)
    driver.close()
    'count ads - return how many links are in the list'
    return len(number_of_links)

下面是调试消息gets generated x100+,请看2018-09-04 22:36:57[selenium.webdriver.remote.remote_connection]DEBUG:加载了一堆javascript的POST。我该怎么解决它呢,还是可以忽略它呢?在

^{pr2}$

Tags: ofdiv消息urlnumbergetdrivercount
2条回答

很难猜测这些消息的原因,但从日志中可以清楚地看出:

  • 您已经将WebDriver实例配置为在控制台上打印DEBUG消息,或者这是默认配置。在
  • 这个粗略的click()事件将触发同步JavaScript的执行,如下所示:

    "POST /session/7229021d-dce2-4653-bea9-7cd29732d83a/execute/sync HTTP/1.1" 200 150
    
  • JavaScript的执行是在当前选定的框架或窗口的上下文中执行的。

  • 提供的脚本片段将作为匿名函数的主体执行。在
  • 在脚本中,使用document引用当前文档。在
  • 一旦脚本完成执行,局部变量将不可用,尽管全局变量将保持不变。在

结论

如果您想去掉控制台上的DEBUG消息,您必须配置WebDriver实例,传递对,如下所示:

^{pr2}$

我不完全确定这是否是你需要的,但是this question似乎和我非常相似。区别在于日志文件被淹没,而不是控制台。 简而言之,解决方案是通过以下方法提高硒的测井水平:

# Set the threshold for selenium to WARNING
from selenium.webdriver.remote.remote_connection import LOGGER as seleniumLogger
seleniumLogger.setLevel(logging.WARNING)

相关问题 更多 >

    热门问题