щелчок по всем строкам в таблице с угловым углом с помощью веб-драйвера Selen Python - PullRequest
2 голосов
/ 08 апреля 2019

Я пытаюсь перебрать определенный столбец строк в таблице / сетке HTML-страницы, и я предполагаю, что это динамический угловой элемент.

Я попытался перебрать строки, создав список общих путей xpath для каждой строки.Это только помогло мне получить 32 строки, а не полную сумму, равную 332. Я также пытался дождаться, чтобы увидеть, загрузится ли веб-страница, а затем будет иметь полное количество веб-элементов.Затем я попытался запустить цикл поиска похожих путей, прокрутив вниз до последнего элемента в списке.Ни один из этих способов не помог мне перебрать строки.Также я не смогу поделиться сайтом, так как сайт является частным.

python

webelement = []
driver.implicitly_wait(20)
ranSleep()
for webelement in driver.find_elements_by_xpath('//a[@class="ng-pristine ng-untouched ng-valid ng-binding ng-scope ng-not-empty"]'):
    driver.implicitly_wait(20)

html для строк

<a ng-model="row.entity.siteCode"
   ng-click="grid.appScope.openSite(row.entity)"
   style="cursor:pointer"
   class="ng-pristine ng-untouched ng-valid ng-binding ng-scope ng-not-empty">
  Albuquerque&nbsp;
  <span title="Open defect(s) on site"
        ng-show="row.entity.openDeficiencies"
        style="background-color:yellow; color:#000;"
        class="ng-hide">
    &nbsp;!&nbsp;
  </span>
</a>

Я ожидаю, что смогу щелкнуть все ссылки в каждой строке, как только это будет решено

Вот фрагмент HTML-кода

<div id="table1" class="container-fluid">
    <div ui-i18n="en"
         class="grid advanceSearch ui-grid ng-isolate-scope grid1554731599680"
         id="grid1" ui-grid="gridOptions"
         ui-grid-expandable="" ui-grid-rowedit=""
         ui-grid-resize-columns="" ui-grid-selection=""
         ui-grid-edit="" ui-grid-move-columns="">
     <!-- TODO (c0bra): add "scoped" attr here, eventually? -->
     <style ui-grid-style="" class="ng-binding">
       .grid1554731599680 {
        /* Styles for the grid */
       }

. Вот как выглядит страница в формате таблицы

Вот строки, которые я хочу просмотреть по всем из них

1 Ответ

0 голосов
/ 08 апреля 2019

Вы все еще можете увеличить каждую ссылку, добавив имя класса, так как они кажутся немного уникальными по природе и используя последнее число в виде символа из алфавита. Возможно, может сработать что-то похожее на приведенное ниже :) Расширение последнего символа класса в случае увеличения должно решить проблему наличия более 26.

Предпринятые шаги: увеличить имена классов> добавить успехи в список> перейти к ссылке в списке> щелкнуть ссылку> элемент списка

import string
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

alpha = string.ascii_uppercase
successfulIncs = []

for char in alpha:
  className = 'ng-pristine.ng-scope.ui-grid-coluiGrid-000' + char
  try:
        driver.find_elements_by_class_name(className)
        successfullIncs.append(className)

  except NoSuchElementException:
        print("Element not found")


### First move to our element
for line in successfulIncs:
  link = WebDriverWait(driver, 3).until(EC.visibility_of_element_located
  (By.CLASS_NAME, line))
  ActionChains(driver).move_to_element(link).perform()

  #Click
  ActionChains(driver).move_to_element(link).click(link).perform()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...