首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >selenium,python --无论我将延迟设置为什么,WebDriverWait都会超时60%。

selenium,python --无论我将延迟设置为什么,WebDriverWait都会超时60%。
EN

Stack Overflow用户
提问于 2021-02-15 09:44:02
回答 1查看 86关注 0票数 1

回溯

代码语言:javascript
复制
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: 

代码

代码语言:javascript
复制
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%的时间里起作用。有人能告诉我是怎么回事吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-15 09:59:07

要单击与文本关联为的(任何少数族裔拥有的),您可以使用以下任何一个定位器策略

  • 使用css_selector "input#EltCbtMinaria-labelledby='LabCbtMin'").click() driver.get('Dsbs.cfm的) driver.find_element(By.CSS_SELECTOR )
  • 使用xpath driver.get('Dsbs.cfm的) driver.find_element(By.XPATH,"//input@id='EltCbtMin‘和@aria-labelledby='LabCbtMin'").click()

理想情况下,要单击需要为WebDriverWait诱导element_to_be_clickable()的元素,可以使用以下任何一个定位器策略

  • 使用CSS_SELECTOR 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"input#EltCbtMinaria-labelledby='LabCbtMin'"))).click() driver.get('Dsbs.cfm的) WebDriverWait(驱动程序)
  • 使用XPATH ( 20).until(EC.element_to_be_clickable((By.XPATH,)//driver.get@id=‘EltCbtMin’和@aria-labelledby=‘LabCbtMin’)).click()
  • 注意事项:您必须添加以下导入: 从selenium.webdriver.support.ui导入WebDriverWait从selenium.webdriver.common.by导入从selenium.webdriver.support导入expected_conditions作为EC
  • 浏览器快照:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66205739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档