Не удается найти правильный текст элемента - PullRequest
1 голос
/ 13 января 2020

Я довольно новичок в этом, и я застрял около 2 дней. Я сделаю все возможное, чтобы объяснить мою проблему.

Это элемент, который я пытаюсь найти:

<div id="popupContent" style="display: block; width: 300px;">
    <div style="width:100%;text-align:center">
        <div>
            <i class="material-icons" style="font-size:80px;color:#e33b3b">clear</i>
        </div>
        <div style="font-size:20px;color:rgba(255,255,255,0.5)">Password Incorrect</div>
    </div>
</div>

Мне нужно, чтобы найти либо там, где написано ясно, либо где написано пароль Неправильно. Если пароль неверный, значки материалов будут отображаться как «ясно», а когда они верны, они говорят «сделано». Стиль div говорит успешно! когда правильно.

Это мой код:

import time
import sys
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException, ElementNotInteractableException, \
    StaleElementReferenceException, WebDriverException
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait

user_agent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.50 Safari/537.36'

options = webdriver.ChromeOptions()
options.add_experimental_option("useAutomationExtension", False)
options.add_argument("--disable-extensions")
#options.add_argument('headless')
options.add_argument(f'user-agent={user_agent}')
options.add_argument('log-level=2')
options.add_argument("--mute-audio")
options.add_argument("window-size=800,600")
driver = webdriver.Chrome(chrome_options=options)


def get_result(user, passw):
    driver.get("website")
    time.sleep(5)
    python_button = driver.find_element_by_id('profileLogin')
    python_button.click()
    password = WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.ID, "accName")))
    password.send_keys(passw)
    username = WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.ID, "accPass")))
    print(str(word_counter) + " " + passw)
    username.send_keys(user)
    login = driver.find_element_by_class_name('accountButton')
    login.click()
    result = driver.find_element_by_css_selector('i.material-icons')
    time.sleep(2)
    print(result.text)

Когда я печатаю (result.text), он каждый раз говорит "сохранить". Когда я пробовал что-то другое, он говорил "center_circle". Я пытаюсь сделать так, чтобы вывод на печать (result.text) либо сбрасывался, либо пароль неверен. Я думаю, что не могу найти элемент правильно, но я не уверен больше.

1 Ответ

1 голос
/ 13 января 2020

После нажатия на кнопку учетной записи. Введите WebDriverWait () и visibility_of_element_located () и следуйте xpath.

print(WebDriverWait(driver,15).until(EC.visibility_of_element_located((By.XPATH,"//div[@id='popupContent']//i[@class='material-icons']"))).text)
print(WebDriverWait(driver,15).until(EC.visibility_of_element_located((By.XPATH,"//div[@id='popupContent']//i[@class='material-icons']/following::div[1]"))).text)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...