Выберите ссылку в строках таблицы, используя Selenium для Python - PullRequest
0 голосов
/ 01 декабря 2018

Я хочу нажать на ссылку, используя Selenium в Python.Ссылка содержится в таблице с динамическим числом строк, и я хочу выбрать ссылку для «Задание создано» на основе самой последней даты.Сложность в том, что ссылка - это не сама дата, а отдельный столбец в строке.

Формат таблицы следующий:

enter image description here

Возможное решение, которое я мог бы сделать, это сделать: button = find_elements_by_link_text ("Job Created"), а затем указать кнопку [0] .click (), но я бы предпочел, если бы был способ выбрать работуСсылка на статус в зависимости от времени создания.

Пример кода для таблицы:

                <tr>
                <!--td>1</td>
                <td></td-->
                <td>2018/12/1 16:12:33 UTC</td>
                <td><a target="_blank" href="/sample/sample">Job Created</a></td>

Спасибо!

1 Ответ

0 голосов
/ 02 декабря 2018

В отсутствие большего количества HTML и / или URL, я надеюсь, что следующее полезно с логической точки зрения.Я выбрал веб-сайт с таблицей, в которой есть столбец цен (это замена даты и времени) и столбец с текстом для сопоставления.Надеюсь, моя попытка не будет оценена слишком резко.

Я обрисую шаги, которые, на мой взгляд, аналогичны вашей проблеме, т. Е.

  1. Используйте xpath, чтобы выбрать два списка, где один список *Элемент тега 1006 * соответствует тексту, а другой - preceding::td[1].В вашем примере я думаю, что возможные пути xpath:

//a[text()="Job Created"]/preceding::td 
//a[text()="Job Created"]

Вы берете текст из первого списка и относитесь к нему по мере необходимости.Вам понадобится функция для форматирования даты и времени, готовые к сортировке.Второй список хранится в виде элементов, поэтому позже можно будет нажать на него.Это предполагает, что ваши даты и время могут обрабатываться и сортироваться приемлемым образом.

Объедините их в один список кортежей, а затем отсортируйте по первому в каждом кортеже

Итак, набросок моего, по общему признанию, не идеального тематического исследования:

from selenium import webdriver
from operator import itemgetter

url ="https://www.wiseowl.co.uk/dax/london/"
driver = webdriver.Chrome()
driver.get(url)

#used title myDates although in my example I am using prices
myDates =[int(element.text.strip('£')) for element in driver.find_elements_by_xpath("//a[text() = 'Book places']/preceding::td[1]")]
myData = [element for element in driver.find_elements_by_xpath("//a[text() = 'Book places']")] #links in adjacent column

combined = list(zip(myDates,myData))
combined = sorted(combined,key=itemgetter(0), reverse=True) #sort list on first 'column'
combined[0][1].click()  #click first in descending list

#other code
# driver.quit()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...