Я не могу получить входные данные типа submit с помощью Python Selenium

#selenium

#selenium

Вопрос:

Я пытаюсь получить идентификатор с помощью кнопки отправки ввода. Когда будет подтверждено, что это правильный, я хочу щелкнуть по нему …. но я не могу найти входные данные типа submit. Я получаю исключение NoSuchElementException.

Заранее благодарю вас, ребята 🙂

Мой HTML-код

 <html>
<body>
    <form name="aspnetForm" method="post" action="./river.aspx" id="aspnetForm">            
    <!--CONTENT START-->
        <table width="100%" style="text-align: center">
            <tbody>
                <tr>
                    <td style="vertical-align: top">
                        <span class="CHeading">Choose a river in Stockholm:</span><br>
                        <input type="submit" name="ctl00$BodyContent$btnChooseRiver00" value="River 00" id="ctl00_BodyContent_btnChooseRiver00" class="CButtonLarge">
                        <span><br></span>
                        <input type="submit" name="ctl00$BodyContent$btnChooseRiver01" value="River 01" id="ctl00_BodyContent_btnChooseRiver01" class="CButtonLarge">
                    </td>      
                    <td style="vertical-align: top">
                        <span class="CHeading">Choose a river in Solna:</span><br>
                        <input type="submit" name="ctl00$BodyContent$btnChooseRiver10" value="River 10" id="ctl00_BodyContent_btnChooseRiver10" class="CButtonLarge">
                        <span><br></span>
                        <input type="submit" name="ctl00$BodyContent$btnChooseRiver11" value="River 11" id="ctl00_BodyContent_btnChooseRiver11" class="CButtonLarge">
                        <span><br></span>
                        <input type="submit" name="ctl00$BodyContent$btnChooseRiver12" value="River 12" id="ctl00_BodyContent_btnChooseRiver12" class="CButtonLarge">
                        <span><br></span>
                        <input type="submit" name="ctl00$BodyContent$btnChooseRiver13" value="River 13" id="ctl00_BodyContent_btnChooseRiver13" class="CButtonLarge">
                    </td>
                </tr>
            </tbody>
        </table>
    </form>
</body>
  

Мой код на Python:

 try:

trInTable = driver.find_element_by_css_selector("#aspnetForm > table > tbody > tr")
twoTdWithData = trInTable.find_elements_by_css_selector('td')

# I get 2 TD in next step
print(len(twoTdWithData))

#loop the 2 TD
for td in twoTdWithData:
    oneChoose = td.find_element_by_css_selector("input[type='submit']")
    idInButton = oneChoose.get_attribute("id")
  

за исключением исключения TimeoutException:
print(‘TimeoutException’)
за исключением исключения NoSuchElementException:
print(‘Исключение NoSuchElementException’)

Ответ №1:

Добро пожаловать в SO. Вот код.

 form = driver.find_element_by_id('aspnetForm')
submitBtns = form.find_elements_by_xpath("//table//tr//td/input[@type='submit']")
for submitBtn in submitBtns:
    print submitBtn.get_attribute("id")
  

Комментарии:

1. Спасибо @supputuri! 🙂 Вместо этого я делаю это для form («aspnetForm») theform = driver.find_element_by_id(‘aspnetForm’) submitBtns = theform.find_elements_by_xpath(«//таблица //tr //td/ввод[@type=’отправить’]») Теперь это работает! Еще раз спасибо!

2. @supputuri: Мне любопытно, присутствует ли что-нибудь в selenium driver.switch_to.form("aspnetForm") ???

3. Ха-ха-ха, это была опечатка. Я думал, что все время, пока печатал, говорил о фрейме, обновил ответ. Спасибо, что указали на это Kajal.