通过Selenium运行浏览器时,点击使用Bootstrap的JavaScript按钮创建的单选按钮的正确方法是什么?
我正在使用Django v1.7和Bootstrap v3.2.0开发WebApp,并使用Selenium执行功能测试。某些HTML页面具有使用Bootstrap's JavaScript buttons创建的单选按钮。
<form class="form-horizontal well" role="form" method="POST">
<div class="row">
<div class="btn-group btn-group-justified" data-toggle="buttons">
<label class="btn btn-primary">
<input type="radio" name="selected_test" value="loop_on_failure"
id="id_loop_on_failure" />Loop on Failure
</label>
<label class="btn btn-primary">
<input type="radio" name="selected_test" value="test_until_failure"
id="id_test_until_failure" />Test Until Failure
</label>
</div>
</div>
<div class="row">
<div class="col-lg-6 col-lg-offset-3">
<div class="input-group">
<input type="text" class="form-control" autofocus name="serial_number"
id="id_serial_number" placeholder="Enter Serial Number">
{% csrf_token %}
<span class="input-group-btn">
<button class="btn btn-primary" id="id_run_test" type="submit">
Test Board
</button>
</span>
</div>
</div>
</div>
</form>
我可以选择所需的单选按钮,输入S / N,并在通过Django的manage.py runserver
运行时按“测试板”按钮。但是,当我运行如下的功能测试时,我收到错误。更具体地说,POST数据不包含selected_test
键,这使我相信Selenium实际上没有点击单选按钮。
browser = webdriver.Firefox()
browser.find_element_by_id('id_test_until_failure').click()
self.assertTrue(browser.find_element_by_id(
'id_test_until_failure').is_selected())
答案 0 :(得分:0)
通过将Selenium webdriver从Firefox切换到Chrome,我发现Selenium需要实际点击输入标签的父级。我相信这是由于输入标签被包裹在标签标签内部,但我不确定。
鉴于我在输入标签上有一个id,我发现这样做的最简单方法如下:
browser.find_element_by_id(
'id_test_until_failure').find_element_by_xpath('..').click()