Какой цикл я должен использовать, чтобы удалить все записи данных в таблице, используя Selenium? - PullRequest
0 голосов
/ 14 января 2019

Мне нужно закодировать цикл, чтобы удалить все записи в таблице. Чтобы удалить записи, мне нужно использовать Selenium, чтобы установить флажок «Удалить» и нажать «Сохранить». Тем не менее, каждая запись имеет уникальное имя «флажок». Первая запись будет называться delete0, вторая запись называется delete1 и так далее. Я пытаюсь создать цикл, который будет проверять наличие «delete0» и, если это так, удалять запись, пока в ней больше не будет записей.

Я пытался использовать цикл while, но не уверен, какие условия мне следует реализовать, поскольку я новичок в Python. Это цикл, который я пробовал:

while driver.find_element_by_class_name("delete0") exist:
    driver.find_element_by_xpath("//input[@type='checkbox']").click()
    driver.find_element_by_id("save-tcp").click()

и это код для сайта:

<form action="TCPFile" method="POST" enctype="multipart/form-data">
                                <div class="form-bottom">
                                    <div class="table-responsive">
                                        <table class="table table-bordered text-center" id="table_tcpfile">
                                            <thead class="log">
                                                <tr>
                                                    <th class="text-center">Index <i class="fa fa-info-circle" data-toggle="tooltip" data-placement="top" title="This index number is used to map to the corresponding index number on the receiver TCP to file settings page."></i></th>
                                                    <th class="text-center">Port <i class="fa fa-info-circle" data-toggle="tooltip" data-placement="top" title="" data-original-title="Enter port of TCP server."></i></th>  
                                                    <th class="text-center">Delete</th>
                                                </tr>
                                            </thead>
                                            <tbody>

                                                    <tr>             
                                                        <td><input type="text" class="Map disabled-input" name="index0" value="0"></td>
                                                        <td><input type="text" class="Map disabled-input" name="port0" value="12333"></td>          
                                                        <td><input type="checkbox" class="" name="delete0"></td>
                                                    </tr>

                                                    <tr>             
                                                        <td><input type="text" class="Map disabled-input" name="index1" value="1"></td>
                                                        <td><input type="text" class="Map disabled-input" name="port1" value="12345"></td>          
                                                        <td><input type="checkbox" class="" name="delete1"></td>
                                                    </tr>

                                                    <tr>             
                                                        <td><input type="text" class="Map disabled-input" name="index2" value="2"></td>
                                                        <td><input type="text" class="Map disabled-input" name="port2" value="13555"></td>          
                                                        <td><input type="checkbox" class="" name="delete2"></td>
                                                    </tr>

                                            </tbody>
                                        </table>
                                    </div>
                                </div>
                                <div class="button-box col-lg-12">
                                    <button type="submit" class="col-2 form-control btn btn-primary " id="save-tcp">Save</button>
                                </div>
                            </form>

Ожидаемый результат - удалить все записи данных.

Ответы [ 2 ]

0 голосов
/ 14 января 2019

Попробуйте что-то вроде этого (извините, если синтаксис неправильный, не эксперт по Python):

checkboxes = driver.find_elements_by_css_selector("input[type='checkbox']")
while checkboxes:
   driver.find_element_by_css_selector("//input[@type='checkbox']").click() 
   checkboxes = driver.find_elements_by_css_selector("input[type='checkbox']")
0 голосов
/ 14 января 2019

Вы можете сопоставить поля ввода по частичному значению @name :

for item in driver.find_elements_by_xpath("//input[starts-with(@name, 'delete')]"):
    item.click()
driver.find_element_by_id("save-tcp").click()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...