Поиск в таблице с помощью Selenium, проверка строки на наличие значения и установка флажка в той же строке, если значение присутствует - PullRequest
0 голосов
/ 06 марта 2020

У меня есть список идентификационных номеров, которые мне нужно сравнить с таблицей на веб-сайте. Если в строке таблицы есть текст, соответствующий одному из идентификаторов в моем списке, мне нужно установить флажок в той же строке, что и номер идентификатора. Я предоставил HTML для приведенной ниже таблицы.

Как мне go узнать о том, как вытащить идентификационные номера из моего списка, а затем использовать Selenium, чтобы найти их в таблице и установить флажок в этой строке ?

Вот то, что я пробовал до сих пор, но я чувствую себя здесь совершенно не так:

MyList = {'1234500', '5432100', '00000989'}

Table = driver.find_element_by_id('tblActivities')
Table_Row = Table.find_elements_by_tag_name('tr')
Table_Cell = Table_Row.find_elements_by_xpath('span[contains(text(), "' + MyList + '")])

Я пытаюсь сравнить свой список со значением, найденным здесь:

<input type="checkbox" name="selectedActivities" value="0000000"
image

Буду признателен за любую помощь.

Ответы [ 2 ]

1 голос
/ 06 марта 2020

Вы можете проверить значение из списка, доступного или отсутствующего в таблице, используйте .find_elements_by_xpath, используйте len:

len(driver.find_elements_by_xpath('//table[@id="tblActivities"]//tr//td//input[@value="value_from_list"]'))

И используйте l oop, чтобы достичь значения:

mylist = {'1234500', '5432100', '00000989'}

for value in mylist:
    if(len(driver.find_elements_by_xpath('//table[@id="tblActivities"]//tr//td//input[@value="' +value +'"]'))>0):
        driver.find_element_by_xpath('//table[@id="tblActivities"]//tr//td//input[@value="' +value +'"]').click()
    else:
        print('not found')
1 голос
/ 06 марта 2020

XPath может быть создан для идентификации флажка с использованием осей Xpath. Использование предка и дочерних отношений в строках и столбцах. Для более подробной информации об осях XPath, пожалуйста, обратитесь: Учебник XPath

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

// span [содержит (text (), "ID_TO_FIND")] / ancestor :: tr // input [@ class = "commonCheckBox"]

Этот XPath может использоваться в вашем примере кода:

MyList = {'1234500', '5432100', '00000989'}

Table = driver.find_element_by_id('tblActivities')
Table_Row = Table.find_elements_by_tag_name('tr')
CheckBox = Table_Row.find_elements_by_xpath('//span[contains(text(),"' + MyList + '")]/ancestor::tr//input[@class="commonCheckBox"]');

Вот обновленный HTML, которым вы поделились, который можно использовать для проверки XPath:

image
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...