Как выполнить итерацию с использованием частичного текста href с использованием selenium python

#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