Не могу найти элемент с селеном в python - PullRequest
1 голос
/ 23 апреля 2020

Я новый кодер, и недавно я начал изучать и автоматизировать работу с Интернетом. Я пытаюсь создать программу, которая будет входить в систему на торговой платформе и искать акции Facebook "FB"

Кажется, что часть входа в систему работает нормально, но поиск акций FB не т. Процесс автоматизации ничего не наберет в строке поиска. Я перепробовал все известные мне методы (find_element_by), но он все равно не будет работать.

Данные учетной записи будут в программе, если вы захотите запустить код самостоятельно "FEEL FREE!" это фальшивая учетная запись ...

Вот мой код:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
browser = webdriver.Chrome('/Users/larskvist/downloads/chromedriver')
browser.get('https://www.forex.com/en-uk/account-login/')

username_elem = browser.find_element_by_name('Username')
username_elem.send_keys('kebababdulaziz@gmail.com')

time.sleep(0.5)

password_elem = browser.find_element_by_name('Password')
password_elem.send_keys('KEbababdulaziz')
password_elem.send_keys(Keys.ENTER)

time.sleep(5)

search_elem = browser.find_element_by_class_name('market-search__button ng-pristine ng-valid ng-touched')
search_elem.send_keys('FB')

time.sleep(30)
browser.close()

Это элемент, который я не хочу получить:

<input _ngcontent-c23="" appcustomplaceholder="" class="market-search__search-input ng-pristine ng-valid ng-touched" formcontrolname="query" type="text" placeholder="Search markets">

Большое спасибо заранее!

Ответы [ 2 ]

1 голос
/ 23 апреля 2020

У вас неверный целевой элемент. Вы должны нацелить элемент input.

Чтобы избежать sleep(), что не излишне замедляет ваш скрипт, лучше всего вызывать WebDriverWait () и ждать element_to_be_clickable () и следующий css селектор.

search_elem = WebDriverWait(browser,20).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"input.market-search__search-input")))
search_elem.send_keys('FB')

Вам необходимо импортировать следующие библиотеки.

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
1 голос
/ 23 апреля 2020

Используйте это:

search_elem = browser.find_element_by_class_name('market-search__button)

Вместо использования полного имени класса с пробелами между ними ...

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