#python #selenium #xpath
#python #selenium #xpath
Вопрос:
Как мне сделать так, чтобы, если XPATH не видит элемент на странице, он пропускал элемент и переходил к следующей строке? Мой код:
1. driver.find_element_by_xpath('//img[@alt = "Black"]').click()
а затем, если он не находит 1-й элемент, он пропускает и пытается найти:
2. driver.find_element_by_xpath('//*[@id="add-remove-buttons"]/input').click()
Я предполагаю, что это как-то связано с «если отображается ___, щелкните, иначе, если ____ click», хотя я не уверен, как это отформатировать.
Комментарии:
1. find_elements_by_xpath вернет список, размер которого вы можете проверить, чтобы использовать его в if вместо try
Ответ №1:
Используйте блок try и catch и catch ElementNotFoundException исключение Java:
try{
//your code to find element
}
catch(ElementNotFoundException)
{
//print element not found
}
// find another element and perform action
Ссылка-https://www.w3schools.com/python/python_try_except.asp
Python:
try:
//your code
except ElementNotFoundException:
print("ELEMENT NOT fOUND")
Комментарии:
1. В конце я использовал блок try, except, finally, что означает, что даже если информация внутри «try» неверна, информация внутри блока «finally» будет выполнена. Спасибо!
Ответ №2:
В xpath вы можете получить объединение двух наборов узлов
driver.find_element_by_xpath(
'//img[@alt = "Black"]|//*[@id="add-remove-buttons"]/input').click()
Комментарии:
1. Но как мне сделать так, чтобы, даже если xpath не находит ‘// img [@alt = «Black»]’, он все равно нажимал ‘// * [@id =»add-remove-buttons»] / input’ ?
2. Для этого
|
и предназначен. Он собирает все с обеих сторон. Например, после открытия stackoverflow.com , Я использовал//tr|//div
. На странице нет никаких tr, поэтому я получил первый div.