Невозможно найти элемент даже после использования webdriverwait и переключиться на параметры - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть сайт, который мне нужно почистить. Я не могу использовать опцию find_element, используя селен, чтобы заполнить поисковый запрос. Я пытался использовать webdriverwait и решение для iframe, используя переключатель, но они не работают.

ссылка 'https://www.notredame.edu.au/staff/staff-directory' Я использую селен. Могу ли я использовать модуль запросов? Я не уверен. Я также попытался использовать xpath, id и name.

browser = webdriver.Chrome('C:\\Users\\albert.malhotra\\Desktop\\Web Scrapings\\Kentucky State\\chromedriver')
url = 'https://www.notredame.edu.au/staff/staff-directory'
browser.get(url)
time.sleep(10)
WebDriverWait(browser, 20).until(EC.frame_to_be_available_and_switch_to_it((By.ID,"tbSimpleSearchName")))

Я должен иметь возможность использовать метод send_keys для ввода критериев поиска и очистки данных оттуда.

Ответы [ 2 ]

0 голосов
/ 03 апреля 2019

Попробуйте следующее для достижения требуемого результата.Обязательно замените something на любое допустимое ключевое слово для поиска.

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys

URL = "https://www.notredame.edu.au/staff/staff-directory"

driver = webdriver.Chrome()
wait = WebDriverWait(driver, 10)
driver.get(URL)

wait.until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"[name='Staff Directory']")))
wait.until(EC.presence_of_element_located((By.ID, "tbSimpleSearchName"))).send_keys("something",Keys.RETURN)
0 голосов
/ 03 апреля 2019

Вы пытаетесь дождаться элемента внутри IFrame.

Вам нужно дождаться самого IFrame, переключиться на него, а затем вы можете выбрать элемент внутри IFrame.

WebDriverWait(browser, 20).until(EC.frame_to_be_available_and_switch_to_it((By.Name,"Staff Directory")))

(я не проверял приведенный выше код и не думаю, что By.Name - правильный выбор, но, надеюсь, это дает вам идею.

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