0
我試圖自動登錄到一個網站,所以我可以從我的氣象站檢索信息。登錄頁面是http://www.lacrossealertsmobile.com/v1.2/#userLogin分裂:選擇正確的按鈕
當我看源代碼我看到幾行文字說
<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>
該碎片文件說
查找方法是可鏈接的,所以你可以找到一個以前發現的元素的後代。
所以我試圖用這樣做如下:
login = browser.find_by_id('userLogin')
login.first.find_by_text('Submit')
我想這樣做是爲了找到登錄部分內「提交」,然後我希望我可以修改代碼爲
login.first.find_by_text('Submit')[0].click()
這沒有奏效。我最終發現這是因爲上面的元素[0]不可見。通過試驗和錯誤,我發現可見按鈕,我想要的,是元素[5]。事實上,看起來我的鏈接搜索沒有做到我想的那樣。下面的2個搜索找到的對象返回不同的地址,但在這兩種情況下,它是元素[5]映射到提交按鈕的顯示形式
>>> 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」的後代,這是我想要的提交按鈕?