Селен не может найти элементы, даже если они существуют - PullRequest
0 голосов
/ 11 октября 2018

Я создаю простой сценарий селена для ввода имени пользователя и пароля для входа. Вот мой код:

driver = webdriver.Chrome(executable_path=r'C:\\Users\\Aspire5\\Downloads\\chromedriver_win32\\chromedriver.exe')
driver.get("https://ven02207.service-now.com/")

username = driver.find_element_by_xpath('//*[@id="user_name"]')
username.send_keys('username')

password = driver.find_element_by_xpath('//*[@id="user_password"]')
password.send_keys('this_is_password')

Но я получаю следующее исключение:

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="user_name"]"}

Я захожу на этот веб-сайт из кода.XPath, который я указал в коде, существует на странице, но все равно возвращает No Such Element Exception.

Что мне здесь не хватает?Я видел это , это вопросы для этого, но не смог найти точного ответа.

Ответы [ 3 ]

0 голосов
/ 11 октября 2018

Просто используйте escape-слэш, и все будет в порядке

'//*[@id=\"user_name\"]'
'//*[@id=\"user_password\"]'
0 голосов
/ 11 октября 2018

сначала нужно переключиться на фрейм .. так как тег input находится внутри фрейма

frame = driver.find_element_by_xpath('//*[@id="gsft_main"]')
driver.switch_to.frame(frame)
driver.find_element_by_id('user_name').send_keys('sarthak')
driver.find_element_by_id('user_password').send_keys('sarthak')
0 голосов
/ 11 октября 2018

Вам нужно подождать, пока элемент появится в DOM.Поэтому попробуйте дождаться получения веб-элемента driverwebdriver.Chrome (executetable_path = r'C: \ Users \ Aspire5 \ Downloads \ chromedriver_win32 \ chromedriver.exe ')

driver.get("https://ven02207.service-now.com/")

username = WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.XPATH, "//*[@id="user_name"]"))
username.send_keys('username')

password = WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.XPATH, '//*[@id="user_password"]'))
password.send_keys('this_is_password')    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...