По вашему вопросу вы не должны ограничивать свои тесты только class attribute .Временами CSS-SELECTOR оказывается более эффективным, в то время как XPATH оказывается полезным.
Согласно тексту HTML DOM 6 + 8 находится в узле предка с атрибутом class как вопрос-ссылка , который имеет нисходящий узел as <b>
, который на самом деле содержит нужный текст.Поэтому, используя CSS-SELECTOR или XPATH , вам нужно идентифицировать <b>
узел.
Чтобы извлечь информацию, вам нужно вызвать WebDriverWait для отображения желаемого элемента , и вы можете использовать следующее решение:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
options = Options()
options.add_argument("start-maximized")
options.add_argument("disable-infobars")
options.add_argument("--disable-extensions")
driver = webdriver.Chrome(chrome_options=options, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
driver.get('http://freerice.com/#/basic-math-pre-algebra/16869')
print(WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.block-means-vocab div#question-title b"))).text)
Примечание. В соответствии с рекомендациями всегда открывайте браузер в развернутом режим и отключение инфобары и расширения