Я пытаюсь получить доступ к сайту http://www.academia.org.br/print/nossa-lingua/busca-no-vocabulario, который содержит информацию, которую рассматривает ABL (португальский язык: Academia Brasileira de Letras, Engli sh: Бразильская академия букв), и Selenium дает мне головная боль, потому что всегда есть точка, которая нуждается в исправлении. Он проверяет, есть ли он на сайте ABL или нет, и это были мои ответы в том порядке, в котором я их сделал:
"Батата": Верно (верно)
"Искейро" Правда (это верно)
"Батата" Ложь (ЧТО ПРОИСХОДИТ!?)
"Искейро" Правда
"Батата" Ложь
И ответ варьируется, но я не знаю причину, я сделал таймер (он все еще в коде), но он не работал! Поэтому я спрашиваю, есть ли у кого-нибудь представление о причине, по которой он не работает. Я перевел комментарии, но не переменные, надеюсь, это все еще понятно.
Код 1:
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import StaleElementReferenceException
def iniciar():
"""open the browser and accesses the ABL's page"""
global browser
options = Options()
prefs = {"profile.managed_default_content_settings.images": 2}
options.add_experimental_option("prefs", prefs)
options.add_argument("--headless") # Make the browser invisible
chrome_driver = "D:\programatio\PycharmProjects\pesquisador_de_palavras_no_vocabulario_da_abl\chromedriver_win32\chromedriver.exe"
browser = webdriver.Chrome(executable_path=chrome_driver, chrome_options=options)
browser.implicitly_wait(10)
browser.get("http://www.academia.org.br/print/nossa-lingua/busca-no-vocabulario")
def pesquisar(x: str) -> bool:
"""It is checked if the X variable is on the ABL's vocabulary"""
# Search and on it writes the variable X
findinput = browser.find_element_by_tag_name("input") # Search INTPUT
findinput.clear()
findinput.send_keys(x) # Writes the 'x' variable
# Search the button to press it
findbtn = browser.find_element_by_css_selector("button.btn.btn-primary") # Search the button
findbtn.click() # Click on it
# Search all the answers given by the site
WebDriverWait(browser, 10)
while True:
d = 0
try:
findpalavra = browser.find_elements_by_class_name("item-palavra")
except NoSuchElementException:
return False
except StaleElementReferenceException:
return False
# checks if on of the variables is equal to the 'x' variable and solves the "StaleElementReferenceException" error
if not findpalavra: # If not had been found
return False
try:
for d in range(0, len(findpalavra)):
if findpalavra[d].text == x:
return True
elif d == len(findpalavra) - 1:
return False
except StaleElementReferenceException:
pass
def sair():
"""The PESQUISADOR is closed"""
browser.quit()
Код 2:
Pesquisador.iniciar()
a = ["batata", "isqueiro", "batata", "isqueiro", "batata"]
for c in range(0, len(a)):
print(Pesquisador.pesquisar(a[c]))
Кстати извините, если я сделал какую-то орфографическую ошибку или если она не стала понятной. Это не мой родной язык (держу пари, это не первый раз, когда ты это слышал!).