XPATH не найден через заполнитель или меткуPython

Программы на Python
Ответить
Anonymous
 XPATH не найден через заполнитель или метку

Сообщение 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")


Подробнее здесь: https://stackoverflow.com/questions/792 ... r-or-label
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»