2015-10-09 2 views
0

Я пытаюсь автоматизировать вход в веб-сайт, чтобы я мог получать информацию с моей метеостанции. Войти страница находится на http://www.lacrossealertsmobile.com/v1.2/#userLoginSplinter: выбор правильной кнопки

Когда я смотрю на исходный код я вижу несколько строк, которые говорят

<button type="submit" class="btn btn-default">Submit</button> 

Я хочу, чтобы выбрать кнопку для страницы входа отображается, когда я захожу на страницу выше. Раздел кода с логином является

<div data-role="page" id="userLogin"> 
    <div data-role="header"> 
     <h1>Login</h1> 
    </div> 
    <div class="logo-container"> 
     <div class="logo-banner"></div> 
    </div> 
    <div class="container"> 
     <div class="row list-group-item active"> 
      <div class="col-md-12"> 
       <h4 class="text-center" style="font-weight: 500; margin:5px;">User Login</h4> 
      </div> 
     </div> 
     <div class="row"> 
      <div class="col-md-12" style="font-size:1.2em;"> 
       <form role="form" id="formLogin" style="margin: 10px 0;"> 
        <div class="form-group"> 
         <label for="exampleInputEmail1">User Name (email address)</label> 
         <input type="text" class="form-control" id="iLogEmail" placeholder="Email" required> 
        </div> 
        <div class="form-group"> 
         <label for="exampleInputPassword1">Password</label> 
         <input type="password" class="form-control" id="iLogPass" placeholder="Password" required> 
        </div> 
        <div class="form-group text-center"> 
         <div class="bs-callout bs-callout-warning" id="userLogin-warning" style="display:none;">warning text</div> 
        </div> 
        <button type="submit" class="btn btn-default">Submit</button> 
       </form> 
       <br> 
      </div> 
     </div> 
     <div class="row list-group-item list-group-item-success" id="newUserDiv"> 
      <div class="col-md-12"> 
       <h4 class="text-center" style="font-weight: 300; margin:5px;">New Users - Click here to get started</h4> 
      </div> 
     </div> 
    </div> 
</div> 

документация Splinter говорит

методы Нахождение являются цепной, так что вы можете найти потомков ранее найденного элемента.

Так что я пытался сделать это с помощью следующих действий:

login = browser.find_by_id('userLogin') 
login.first.find_by_text('Submit') 

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

login.first.find_by_text('Submit')[0].click() 

Это не сработало. В конце концов я узнал, что это потому, что элемент [0] выше не отображается. В результате проб и ошибок я обнаружил, что видимая кнопка, которую я хочу, является элементом [5]. На самом деле, похоже, что мой прикованный поиск не делал то, что я думал. Эти 2 поисков ниже возвращают разные адреса для объектов, найденных, но в любом случае это элемент [5], который отображается на кнопку Submit на отображаемой форме

>>> login.first.find_by_text('Submit') 
[<splinter.driver.webdriver.WebDriverElement object at 0x03320FF0>, <splinter.driver.webdriver.WebDriverElement object at 0x033AD170>, <splinter.driver.webdriver.WebDriverElement object at 0x033AD1B0>, <splinter.driver.webdriver.WebDriverElement object at 0x033AD210>, <splinter.driver.webdriver.WebDriverElement object at 0x033AD250>, <splinter.driver.webdriver.WebDriverElement object at 0x033AD290>, <splinter.driver.webdriver.WebDriverElement object at 0x033AD2D0>, <splinter.driver.webdriver.WebDriverElement object at 0x033AD310>] 
>>> browser.find_by_text('Submit') 
[<splinter.driver.webdriver.WebDriverElement object at 0x0326CEB0>, <splinter.driver.webdriver.WebDriverElement object at 0x0326C590>, <splinter.driver.webdriver.WebDriverElement object at 0x033200F0>, <splinter.driver.webdriver.WebDriverElement object at 0x033209B0>, <splinter.driver.webdriver.WebDriverElement object at 0x033201B0>, <splinter.driver.webdriver.WebDriverElement object at 0x03320190>, <splinter.driver.webdriver.WebDriverElement object at 0x033207D0>, <splinter.driver.webdriver.WebDriverElement object at 0x033AD350>] 

Так что мой вопрос почему не прикован поиск вернуть потомка «userLogin», который является кнопкой «Отправить», которую я хочу?

ответ

0

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

В качестве альтернативы, вы можете найти Xpath с помощью Absolute Xpath или попробовать использовать объект непосредственно над ним в DOM.

Смежные вопросы