Я создаю инструмент Selenium для автоматического заполнения контактных форм на веб-сайтах. Я выбираю соответствующую область ввода/текста через By.NAME или By.XPATH. По большей части все работает, но у меня проблемы с надежностью, и я не могу понять, в чем ошибка XPATH. Это мой код:
try:
message_name_list = [
"your-message"
]
message_xpath_list = [
"//label[contains(.,'Anything else you would like us to know?')]/following-sibling::div[1]/textarea",
"//textarea/@placeholder[contains, 'Message']"
]
for key in message_name_list:
try:
select_box_message = driver.find_element(By.NAME, key)
if select_box_message and driver.find_element(By.XPATH, "//input[@type='file']"):
select_box_message.click()
time.sleep(1)
select_box_message.send_keys(ShortMessage)
else:
select_box_message.click()
time.sleep(1)
select_box_message.send_keys(Message)
except:
print("Message Name Not Found")
for key in message_xpath_list:
try:
select_box_message = driver.find_element(By.XPATH, key)
if select_box_message and driver.find_element(By.XPATH, "//input[@type='file']"):
select_box_message.click()
time.sleep(1)
select_box_message.send_keys(ShortMessage)
else:
select_box_message.click()
time.sleep(1)
select_box_message.send_keys(Message)
except:
print("Message XPATH Not Found")
except:
print("Message N/A")
Я использую аналогичный оператор try/Exception для других полей, и он работает должным образом. Однако ввод текстовых полей вызывает у меня некоторые проблемы.
Это соответствующий код для рассматриваемого веб-сайта:
Message
Я думаю, что смогу найти его по имени («input_5»), но поскольку оно меняется в разных формах веб-сайта, я чувствую, что это может вызвать проблемы в дальнейшем.
Спасибо за любую помощь!
РЕДАКТИРОВАТЬ:
Проблему вызывал оператор If/Else. Если его не указывать, то работает. Я попытался изменить его на блок кода ниже, но проблема все еще остается.
try:
message_name_list = [
"your-message"
]
message_xpath_list = [
"//label[contains(.,'Anything else you would like us to know?')]/following-sibling::div[1]/textarea",
"//textarea[1][contains(@placeholder, 'Message')]"
]
for key in message_name_list:
try:
select_box_message = driver.find_element(By.NAME, key)
select_box_message.click()
time.sleep(1)
if driver.find_element(By.XPATH, "//input[@type='file']"):
select_box_message.send_keys(ShortMessage)
else:
select_box_message.send_keys(Message)
except:
print("Message Name Not Found")
for key in message_xpath_list:
try:
select_box_message = driver.find_element(By.XPATH, key)
select_box_message.click()
time.sleep(1)
if driver.find_element(By.XPATH, "//input[@type='file']"):
select_box_message.send_keys(ShortMessage)
else:
select_box_message.send_keys(Message)
except:
print("Message XPATH Not Found")
except:
print("Message N/A")
Подробнее здесь: https://stackoverflow.com/questions/792 ... r-or-label
XPATH не найден через заполнитель или метку ⇐ Python
Программы на Python
-
Anonymous
1732302823
Anonymous
Я создаю инструмент Selenium для автоматического заполнения контактных форм на веб-сайтах. Я выбираю соответствующую область ввода/текста через By.NAME или By.XPATH. По большей части все работает, но у меня проблемы с надежностью, и я не могу понять, в чем ошибка XPATH. Это мой код:
try:
message_name_list = [
"your-message"
]
message_xpath_list = [
"//label[contains(.,'Anything else you would like us to know?')]/following-sibling::div[1]/textarea",
"//textarea/@placeholder[contains, 'Message']"
]
for key in message_name_list:
try:
select_box_message = driver.find_element(By.NAME, key)
if select_box_message and driver.find_element(By.XPATH, "//input[@type='file']"):
select_box_message.click()
time.sleep(1)
select_box_message.send_keys(ShortMessage)
else:
select_box_message.click()
time.sleep(1)
select_box_message.send_keys(Message)
except:
print("Message Name Not Found")
for key in message_xpath_list:
try:
select_box_message = driver.find_element(By.XPATH, key)
if select_box_message and driver.find_element(By.XPATH, "//input[@type='file']"):
select_box_message.click()
time.sleep(1)
select_box_message.send_keys(ShortMessage)
else:
select_box_message.click()
time.sleep(1)
select_box_message.send_keys(Message)
except:
print("Message XPATH Not Found")
except:
print("Message N/A")
Я использую аналогичный оператор try/Exception для других полей, и он работает должным образом. Однако ввод текстовых полей вызывает у меня некоторые проблемы.
Это соответствующий код для рассматриваемого веб-сайта:
Message
Я думаю, что смогу найти его по имени («input_5»), но поскольку оно меняется в разных формах веб-сайта, я чувствую, что это может вызвать проблемы в дальнейшем.
Спасибо за любую помощь!
РЕДАКТИРОВАТЬ:
Проблему вызывал оператор If/Else. Если его не указывать, то работает. Я попытался изменить его на блок кода ниже, но проблема все еще остается.
try:
message_name_list = [
"your-message"
]
message_xpath_list = [
"//label[contains(.,'Anything else you would like us to know?')]/following-sibling::div[1]/textarea",
"//textarea[1][contains(@placeholder, 'Message')]"
]
for key in message_name_list:
try:
select_box_message = driver.find_element(By.NAME, key)
select_box_message.click()
time.sleep(1)
if driver.find_element(By.XPATH, "//input[@type='file']"):
select_box_message.send_keys(ShortMessage)
else:
select_box_message.send_keys(Message)
except:
print("Message Name Not Found")
for key in message_xpath_list:
try:
select_box_message = driver.find_element(By.XPATH, key)
select_box_message.click()
time.sleep(1)
if driver.find_element(By.XPATH, "//input[@type='file']"):
select_box_message.send_keys(ShortMessage)
else:
select_box_message.send_keys(Message)
except:
print("Message XPATH Not Found")
except:
print("Message N/A")
Подробнее здесь: [url]https://stackoverflow.com/questions/79216156/xpath-not-found-through-placeholder-or-label[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия