当前位置: 首页 > 知识库问答 >
问题:

TimeoutException:消息:

郑波
2023-03-14
import os   
from selenium import webdriver
import time    
from linkedin_scraper import actions    
from selenium import webdriver    
from selenium.webdriver.common.by import By    
from selenium.webdriver.support.ui import WebDriverWait    
from selenium.webdriver.support import expected_conditions as EC    
from selenium.common.exceptions import TimeoutException    
from selenium.webdriver.chrome.options import Options


chrome_options = Options()    
chrome_options.add_argument("--headless")

driver = webdriver.Chrome("driver/chromedriver", options=chrome_options)    
email = os.getenv("LINKEDIN_USER")    
password = os.getenv("LINKEDIN_PASSWORD")

actions.login(driver, email, password) # if email and password isnt given, it'll prompt in terminal
driver.get('https://www.linkedin.com/company/biorasi-llc/about/')

_ = WebDriverWait(driver, 3).until(EC.presence_of_all_elements_located((By.TAG_NAME, 'section')))

time.sleep(3)    
grid = driver.find_elements_by_tag_name("section")[3]
about_us = grid.find_elements_by_tag_name("p")[0].text.strip()

print(about_us)
 17 email = os.getenv("LINKEDIN_USER")
 18 password = os.getenv("LINKEDIN_PASSWORD")
 20 driver.get('https://www.linkedin.com/company/biorasi-llc/about/')
 21 _ = WebDriverWait(driver, 3).until(EC.presence_of_all_elements_located((By.TAG_NAME, 'section')))
 28   password_elem.submit()
 29 

--->30 element=WebDriverWait(driver,10).tea(ec.presence_of_element_locited((by.id,“profile-nav-item”))

~\anaconda3\lib\site-packages\selenium\webdriver\support\wait.py在(self,method,message)之前

 78             if time.time() > end_time:
 79                 break

--->80引发TimeoutException(消息、屏幕、stacktrace)81 82 def until_not(self,method,message=''):

有人,请帮忙怎么解决这个。

共有1个答案

孙泉
2023-03-14

可能是因为超时太短(3秒),所以在页面完全加载之前,它就达到了超时阈值。在第21行试着提高到5-10秒。

TIMEOUT = 10
 _ = WebDriverWait(driver, TIMEOUT).until(EC.presence_of_all_elements_located((By.TAG_NAME, 'section')))

以下是一些改进代码的技巧:

  • 您已经在使用fluent wait(webdriverwait),如果可能的话,尽量减少使用.sleep的时间。WebDriverWait将停止等待并返回您的元素,从而节省时间。
  • 通过标记名查找元素&按序号定位(在本例中是第4节标记)是一个坏主意。如果网站添加更多的部分,将会中断。尝试使用更好的XPATH,这是我的代码,我没有测试过,但我认为它会工作得很好。
import os   
from selenium import webdriver
import time    
from linkedin_scraper import actions    
from selenium import webdriver    
from selenium.webdriver.common.by import By    
from selenium.webdriver.support.ui import WebDriverWait    
from selenium.webdriver.support import expected_conditions as EC    
from selenium.common.exceptions import TimeoutException    
from selenium.webdriver.chrome.options import Options


chrome_options = Options()    
chrome_options.add_argument("--headless")

driver = webdriver.Chrome("driver/chromedriver", options=chrome_options)    
email = os.getenv("LINKEDIN_USER")    
password = os.getenv("LINKEDIN_PASSWORD")

actions.login(driver, email, password) # if email and password isnt given, it'll prompt in terminal
driver.get('https://www.linkedin.com/company/biorasi-llc/about/')

# directly finds paragraph, removed time.sleep
paragraph_elem = WebDriverWait(driver, 15).until(EC.presence_of_element_located((By.XPATH, '//section//h4/..//p')))
about_us = paragraph_elem.text.strip()

print(about_us)
 类似资料:
  • 我有一个问题与产生的消息Kafka的主题。 我使用来自外部供应商的Kafka管理服务,所以我问他经纪人的状况,他说一切都好。顺便说一句,它发生在三个不同的Kafka实例上。Kafka客户端版本也无关紧要-0.11.0.0和2.0.1都有。

  • 我对Selenium和Python是新手。我可以浏览网站,找到元素并打印出来,但速度很慢 Python版本:3.10;Selenium WebDrive:Firefox;IDE:PyCharm 2021.3.2(CE);操作系统:Fedora 35 VM 我试图打印的元素的HTML代码: 我的Python Selenium找到了大部分时间都能正常工作的代码(但当服务器需要很长时间才能响应时失败):

  • 我们目前正在将我们的自动化脚本从Selenium RC迁移到WebDriver。我遇到了一些WebDriver的问题,主要是处理在被测试的web页面中的内容发生更改时抛出的TimeoutExceptions。 例如,我当前正在登录一个页面,然后单击submit按钮,该按钮将重定向到一个新页面。调用click()方法的瞬间,就会引发异常。但是,如果我将注意力集中在password字段并使用SendK

  • 我用的是Selenium ChromeDriver v2.40,Chrome版本67。 上面两个findelement都可以,可以获取值,但不能点击,因为元素不可见。 所以我继续尝试预期条件,没有运气: 上面的代码返回: 它与Chromev67有任何向后兼容问题吗?

  • 问题内容: 在下面的代码中,我按预期在100秒后捕获了TimeoutException。在这一点上,我希望代码从main退出,而程序终止,但它会一直打印到控制台。如何使任务在超时后停止执行? 问题答案: 您需要在超时时取消任务(并中断其线程)。那就是方法。:

  • 我正在尝试使用VertxUnitRunner运行junit测试用例。班我有35个测试用例,每次都会针对不同的测试用例并发异常。我正在与jenkins一起在VM机器上运行这些测试用例。 有人知道这个问题的解决方案吗?