Поиск WebDriver по имени класса - PullRequest
0 голосов
/ 07 декабря 2018

Я пытаюсь найти информацию на веб-странице, используя атрибут class и selenium WeDriver.Я хочу напечатать 6 + 8 в следующем HTML-коде:

<a href="/#/basic-math-pre-algebra/16869" class="question-link"><b>6 + 8</b> = </a>

Я ищу по имени класса, а также пробовал XPATH.XPATH:

//*[@id="question-link"]

Мой код:

from selenium import webdriver

url_rice = 'http://freerice.com/#/basic-math-pre-algebra/16869'

driver = webdriver.Chrome()
driver.get('http://freerice.com/#/basic-math-pre-algebra/16869')

def question():
    print(driver.find_elements_by_class_name("question-link"))

question()

driver.quit()

1 Ответ

0 голосов
/ 07 декабря 2018

По вашему вопросу вы не должны ограничивать свои тесты только 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)

Примечание. В соответствии с рекомендациями всегда открывайте браузер в развернутом режим и отключение инфобары и расширения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...