Подождите, пока элементы будут видны после нажатия и распечатайте нужные мне элементы Selenium Python - PullRequest
1 голос
/ 14 февраля 2020

Я хочу подождать, пока элемент будет виден после щелчка, и распечатать нужный элемент. Но это просто не ждет, пока я не использую 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 секунды, если элементы уже видны.

1 Ответ

1 голос
/ 14 февраля 2020

tbody всегда там; он пуст, пока вы не выполните поиск.

Попробуйте дождаться результатов в tbody, например:

wait = WebDriverWait(driver, 20)
b = wait.until(EC.visibility_of_element_located((By.XPATH, '//tbody//tr')))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...