Selenium для входа на сайт с использованием элементов драйвера - PullRequest
0 голосов
/ 05 февраля 2019

Ниже я прикрепил html-код для имени пользователя и пароля:

ИМЯ ПОЛЬЗОВАТЕЛЯ:

<input class="form-control input-sm snl-widgets-input-text snl-selectable action" data-part="input" data-bind="snlEnable: enable,value: value,valueUpdate: valueUpdate,visible: visible,css: { 'tags': enableTagsInput, 'clear': enableClear, 'search': enableSearch, 'action': externalActionVisible, 'pseudoTags': enablePseudoTags },hasFocus: hasFocus,attr: { type: type, name: name, placeholder: placeholder, maxlength: maxlength }" type="text" name="username" placeholder="Email address" maxlength="524288">

ПАРОЛЬ:

<input class="form-control input-sm snl-widgets-input-text snl-selectable action" data-part="input" data-bind="snlEnable: enable,value: value,valueUpdate: valueUpdate,visible: visible,css: { 'tags': enableTagsInput, 'clear': enableClear, 'search': enableSearch, 'action': externalActionVisible, 'pseudoTags': enablePseudoTags },hasFocus: hasFocus,attr: { type: type, name: name, placeholder: placeholder, maxlength: maxlength }" type="password" name="password" placeholder="Password" maxlength="524288">

Я использую Python 3.7.

У меня ошибка «невозможно найти элемент» при использовании следующих xpath, которые были предоставлены при щелчке правой кнопкой мыши и запросе xpath:

username = driver.find_element_by_xpath("//*[@id=applicationHost]/div/div[2]/div[2]/div[4]/div[11]/div/div[2]/div[1]/div/form/div/div/div/div[3]/div[2]/div/div[1]/div[1]/div[1]/input")
password = driver.find_element_by_xpath("//*[@id=applicationHost]/div/div[2]/div[2]/div[4]/div[11]/div/div[2]/div[1]/div/form/div/div/div/div[3]/div[2]/div/div[1]/div[1]/div[2]/input")

Ответы [ 3 ]

0 голосов
/ 05 февраля 2019

Я бы также предложил явно ждать элемента.

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
driver = webdriver.Chrome()
url="http://www.example.com"#your url here
driver.get(url)
element=WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH ,'//img[starts-with(@id,'removeImage_')]')))
#or '//img[contains(@id,'removeImage_')]'
element.click()
0 голосов
/ 06 февраля 2019

Вы можете найти элементы по имени ...

username = driver.find_element_by_name('username')
password = driver.find_element_by_name('password')
0 голосов
/ 05 февраля 2019

С размещенным вами фрагментом я могу предложить вам:

from selenium.webdriver.common.by import By
driver.find_element(By.ID, "removeImage_E61858CD-F1F9-42BD-8848-8CB6B42ED2FE")

Другой способ может быть с xPath.Один из многих способов, которыми вы можете воспользоваться для получения xPath, - это открыть его в браузере (например, firefox), щелкнуть правой кнопкой мыши по элементу, проверить (Q), Copy, xPath, и вы можете использовать xpath:

driver.find_element(By.XPATH, 'your[4]/xPath/to[2]/element')

Если вы хотите щелкнуть по элементу, добавьте click () в конце:

driver.find_element(By.ID, "removeImage_E61858CD-F1F9-42BD-8848-8CB6B42ED2FE").click().

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

...