Постоянно проверяйте, есть ли элемент на экране - Python Selenium - PullRequest
0 голосов
/ 09 мая 2019

Я хочу всегда проверять, есть ли элемент в данный момент на сайте. Веб-сайт динамически обновляется, поэтому я хочу проверять каждый раз, когда он обновляется, если это возможно, или просто во время цикла True. У меня есть этот код прямо сейчас:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
while True:
    if EC.presence_of_element_located((By.CLASS_NAME, 'multiple-choice')):
        print('was mult but not quite')
        if not EC.presence_of_element_located((By.ID, 'video-loading-overlay')):
            print("hooray")
            eng = driver.find_element_by_class_name('qquestion')
            print(eng.get_attribute('text'))
            break

Тем не менее, это постоянно печатает "было много, но не совсем", даже если на экране нет элемента с именем класса multip_choice.

Ответы [ 2 ]

2 голосов
/ 09 мая 2019

Измените строку ниже

if not EC.presence_of_element_located((By.ID, 'video-loading-overlay')):

до

if (len(driver.find_elements_by_id('video-loading-overlay'))==0):
0 голосов
/ 09 мая 2019

Вместо проверки элемента. Сначала проверьте, что счетчик длины больше нуля, а затем перейдите к следующему элементу, чтобы проверить то же самое снова. Попробуйте приведенный ниже код. См., Если это помогает.

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

while True:
    if len(WebDriverWait(driver,5).until(EC.presence_of_all_elements_located((By.CLASS_NAME, 'multiple-choice'))))>0:
        print('was mult but not quite')
        if len(WebDriverWait(driver,5).until(EC.presence_of_all_elements_located((By.ID, 'video-loading-overlay'))))==0:
            print("hooray")
            eng = driver.find_element_by_class_name('qquestion')
            print(eng.get_attribute('text'))
            break
    else:
        continue
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...