#python #selenium
#python #селен
Вопрос:
HTML:
<a href="javascript:__doPostBack('gvDisplayProducts','Page$2')" style="color:White;">2</a>
Xpath:
//*[@id="gvDisplayProducts"]/tbody/tr[28]/td/table/tbody/tr/td[2]/a
Это кнопки страницы, на которые мне нужно нажать, над href, а xpath — для одной из кнопок страницы и
Я пытаюсь перебирать разные страницы результатов поиска на веб-сайте. В XPATH значение td["value"]
увеличивается с 1 до 10 для страниц 1-10, а затем для страниц 11-20 td["value"]
снова становится от 1 до 10.
Как я могу выполнить итерацию, используя 'Page$i'
часть href. Я не могу использовать xpath, потому что xpath повторяется снова после достижения определенной страницы. Пожалуйста, дайте мне знать, могу ли я выполнить итерацию только по 'Page$"i"'
части, используя selenium и python.
Комментарии:
1. Пожалуйста, вставьте часть HTML, тогда мы сможем помочь вам лучше 🙂
2. Почему вы не можете использовать xpath.?
3. Вы можете использовать xpath для проверки значения атрибута href rm. Что вас останавливает
4. Отредактировал вопрос с помощью html, а также xpath, пожалуйста, сообщите
5. Это очень маленький фрагмент кода, не могли бы вы предоставить немного больше и / или URL-адрес, который дал бы нам общую картину, пожалуйста
Ответ №1:
Вы можете использовать строковый формат python
elems = [driver.find_element_by_xpath(f"//a[@href="javascript:__doPostBack('gvDisplayProducts','Page${i}')"]") for i in range(10)]
Это даст список всех элементов в виде списка в переменных элементах
если вы измените find elem для печати :
итак, посмотрите, работает ли указанный вами xpath, если это так, это способ перебора i в href в вашем xpath
Я добавил элемент в HTML-файл и попытался выполнить поиск с использованием xpath
вы можете видеть, что он обнаружен правильно
если в вашем случае он не обнаружен, посмотрите, ожидает ли его внутри iframe или вам нужен webdriver
Комментарии:
1. Это недопустимый XPATH, так что это не сработает .. Пожалуйста, обратитесь к href и xpath выше
2. //a[@href=»javascript:__doPostBack(‘gvDisplayProducts’,’Страница $ 2′)»] можете ли вы найти с помощью этого xpath? это тот, который вы указали в вопросе
3. это не xpath ..xpath — это //*[@id=»gvDisplayProducts»]/tbody/tr[28]/td/table/tbody/tr/td[2]/a