追溯
09:32:01 Traceback (most recent call last):
File "/home/mike/projects/work/blacklight/venv/lib/python3.8/site-packages/rq/worker.py", line 975, in perform_job
rv = job.perform()
File "/home/mike/projects/work/blacklight/venv/lib/python3.8/site-packages/rq/job.py", line 696, in perform
self._result = self._execute()
File "/home/mike/projects/work/blacklight/venv/lib/python3.8/site-packages/rq/job.py", line 719, in _execute
return self.func(*self.args, **self.kwargs)
File "./sba_scraper/scrape.py", line 69, in scrape
any_minority_owned_checkbox = WebDriverWait(driver, delay).until(
File "/home/mike/projects/work/blacklight/venv/lib/python3.8/site-packages/selenium/webdriver/support/wait.py", line 80, in until
raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message:
代码
driver = webdriver.Firefox(firefox_profile=profile, options=options)
url = 'https://web.sba.gov/pro-net/search/dsp_dsbs.cfm'
driver.get(url)
delay = 60
checkbox = WebDriverWait(driver, delay).until(
EC.presence_of_element_located((By.ID, 'EltCbtMin')))
无论我将延迟设置为3还是10或60,大多数时候我都会收到上面的异常,即它在找到该元素之前就超时了。显然,它可以工作40%的时间。谁能告诉我这是怎么回事?
要单击与文本关联的复选框,即拥有任何少数民族,您可以使用以下定位策略之一:
使用css_selector
:
driver.get('https://web.sba.gov/pro-net/search/dsp_dsbs.cfm')
driver.find_element(By.CSS_SELECTOR, "input#EltCbtMin[aria-labelledby='LabCbtMin']").click()
使用xpath
:
driver.get('https://web.sba.gov/pro-net/search/dsp_dsbs.cfm')
driver.find_element(By.XPATH, "//input[@id='EltCbtMin' and @aria-labelledby='LabCbtMin']").click()
理想情况下,要单击,您需要为引入WebDriverWait,element_to_be_clickable()
并且可以使用以下定位策略之一:
使用CSS_SELECTOR
:
driver.get('https://web.sba.gov/pro-net/search/dsp_dsbs.cfm')
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input#EltCbtMin[aria-labelledby='LabCbtMin']"))).click()
使用XPATH
:
driver.get('https://web.sba.gov/pro-net/search/dsp_dsbs.cfm')
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@id='EltCbtMin' and @aria-labelledby='LabCbtMin']"))).click()
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
浏览器快照:
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句