selenium - 单击并打印我需要 Selenium Python 的元素后等待元素可见
问题描述
我想在单击后等待元素可见并打印我需要的元素。但除非我使用 time.sleep,否则它不会等待。我想用
WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, 'tbody')))
为了效率。
请帮忙。
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException
driver = webdriver.Chrome(executable_path=r"C:\Users\Kim woo jae\PycharmProjects\100개 키워드\chromedriver.exe")
ky = '화장대','침대', '고기'
for k in ky:
driver.get("http://whereispost.com/seller/")
box = driver.find_element_by_xpath('//*[@id="keyword"]')
box.clear()
box.send_keys(k)
box.submit()
wait = WebDriverWait(driver, 20)
b = wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, 'tbody')))
print(b.text)
这是我要使用的代码。但它不会等待元素可见。
driver = webdriver.Chrome(executable_path=r"C:\Users\Kim woo jae\PycharmProjects\100개 키워드\chromedriver.exe")
ky = '화장대','침대', '고기'
for k in ky:
driver.get("http://whereispost.com/seller/")
box = driver.find_element_by_xpath('//*[@id="keyword"]')
box.clear()
box.send_keys(k)
box.submit()
**time.sleep(3)**
wait = WebDriverWait(driver, 20)
b = wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, 'tbody')))
print(b.text)
如果我添加 time.sleep(3),它工作正常。但是如果元素已经可见,我不想等待 3 秒。
解决方案
tbody
一直都在;在您进行搜索之前它是空的。
尝试在 中等待一些结果tbody
,例如:
wait = WebDriverWait(driver, 20)
b = wait.until(EC.visibility_of_element_located((By.XPATH, '//tbody//tr')))
推荐阅读
- ios - 如何使用 Swift 4 解决 Tableview 数据数组“超出范围值”?
- php - 出现错误时如何保持模态显示
- spring-boot - 如何将自定义字段添加到日志 logback-logstash
- html - 让边框环绕整个元素
- asp.net-mvc - 使用带有表单参数的 pagedlist
- laravel - Laravel eloquent query always returns all columns even when passing id
- angular - Angular 6:给定 ElementRef,我可以得到 ViewContainerRef
- ruby-on-rails - Heroku 回滚并拉取旧版本
- java - Java - 在另一个类中使用包的主要方法
- javascript - 带有 React.js 的 url 上的按钮增量 ID 的 onClick