Поисковый тег в классе таблицы с использованием Selenium в Python - PullRequest
0 голосов
/ 21 декабря 2018

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

Так что я смотрел на HTMLи думаю, можно добраться до этого через этот путь, но мне нужно лишь небольшое руководство, так как я не нашел в Интернете ничего, что соответствовало бы моим потребностям.

В примере HTML вы увидите, гдеданные, которые мне нужно найти, находятся в тегах tr и td class="readonly-cell cell-selected cell-selected-primary sheet-coll.

. Я пытаюсь получить идентификатор GPC_material, который находится в <span> в тегах td.

IЯ работал с WebDriver, чтобы посмотреть, смогу ли я найти идентификатор, но столкнулся с проблемой, пытаясь устранить неполадку, чтобы процесс прокрутил контейнер прокрутки вниз, чтобы найти идентификатор.

HTML:

<table class="sheet-table horizontal-sheet-table last-row-horizontal-content-page">
 <tbody>
  <tr class="odd" style="height:32px;">
   <td class="readonly-cell cell-selected cell-selected-primary sheet-coll" data-col="0" data-row="133" style="display: table-cell; width:100px;" title="">
    <div class="sheet-cell" style="max-height:28px">
     <span>
      GPC_material
     </span>
    </div>
   </td>
   <td class=" sheet-coll" data-col="1" data-row="133" style="display: table-cell; width:100px;" title="">
    <div class="sheet-cell" style="max-height:28px">
    </div>
   </td>
   <td class=" sheet-coll" data-col="2" data-row="133" style="display: table-cell; width:100px;" title="">
    <div class="sheet-cell" style="max-height:28px">
    </div>
   </td>
   <td class=" sheet-coll" data-col="3" data-row="133" style="display: table-cell; width:100px;" title="">
    <div class="sheet-cell" style="max-height:28px">
     <span class="gwt-CheckBox">
      <input id="gwt-uid-912x133x3x604577791" tabindex="-1" type="checkbox"/>
      <label for="gwt-uid-912x133x3x604577791">
      </label>
     </span>
    </div>
   </td>
   <td class=" sheet-coll" data-col="4" data-row="133" style="display: table-cell; width:100px;" title="">
    <div class="sheet-cell" style="max-height:28px">
    </div>
   </td>
   <td class=" sheet-coll" data-col="5" data-row="133" style="display: table-cell; width:100px;" title="">
    <div class="sheet-cell" style="max-height:28px">
    </div>
   </td>
   <td class="readonly-cell sheet-coll" data-col="6" data-row="133" style="display: table-cell; width:100px;" title="">
    <div class="sheet-cell" style="max-height:28px">
    </div>
   </td>
  </tr>
  </tbody>
</table>

КОД I ​​ПРЕДЫДУЩАЯ ПРОБОВАНА:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait

driver = webdriver.Chrome()
wait = WebDriverWait(driver, 20)

attribute_id = 'GPC_material'

table = wait.until(driver.find_element(By.XPATH, "//tr/td[@class ='readonly-cell cell-selected cell-selected-primary sheet-coll']"))

Конечной целью является поиск идентификатора и «щелчок», потому что на этом уровне строки я будунеобходимо выполнить процессы, такие как вставка «Y» в ячейку, щелкнуть радио, если это необходимо, и вставить число в другую ячейку в той же строке идентификатора.

1 Ответ

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

Чтобы найти элемент с текстом как GPC_material , вы можете использовать одно из следующих решений:

  • Использование CSS_SELECTOR:

    GPC_material_element = driver.find_element_by_css_selector("table.sheet-table.horizontal-sheet-table.last-row-horizontal-content-page td.readonly-cell.cell-selected.cell-selected-primary.sheet-coll>div.sheet-cell>span")
    
  • Использование XPATH:

    GPC_material_element = driver.find_element_by_xpath("//table[@class='sheet-table horizontal-sheet-table last-row-horizontal-content-page']//td[@class='readonly-cell cell-selected cell-selected-primary sheet-coll']/div[@class='sheet-cell']/span[normalize-space()='GPC_material']")
    
...