【发布时间】:2018-08-03 19:28:01
【问题描述】:
无法单击表单按钮,但可以在屏幕上看到它。我可以看到该按钮,但由于某种原因无法单击它,该按钮肯定在屏幕中间。尝试过,xpath,id,class 等。它上面似乎有一个按钮,也隐藏了相同的 id。 html 也包含在此处。不知道我错过了什么。谢谢
=== RESTART: C:\ffox_Data_Source_SCCM.py ===
Traceback (most recent call last):
File "C:\Selenium\ffox_Data_Source_SCCM.py", line 67, in <module>
import_btn.click()
File "C:\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webelement.py", line 80, in click
self._execute(Command.CLICK_ELEMENT)
File "C:\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webelement.py", line 628, in _execute
return self._parent.execute(command, params)
File "C:\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 320, in execute
self.error_handler.check_response(response)
File "C:\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementNotInteractableException: Message: Element <button id="import_button" class="web" name="import_button" type="submit"> could not be scrolled into view
### CODE ###
from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.action_chains import ActionChains
base_url = "xxx"
driver = webdriver.Firefox()
driver.implicitly_wait(10)
driver.get(base_url)
username = driver.find_element_by_id("userNameInput")
username.send_keys("xxx")
time.sleep(1)
password = driver.find_element_by_id("passwordInput")
password.send_keys("xxx")
password.send_keys(Keys.RETURN)
time.sleep(6)
driver.implicitly_wait(5)
createnew = driver.find_element_by_id("filter")
createnew.send_keys("sys_data_source.list")
time.sleep(2)
createnew.send_keys(Keys.RETURN)
time.sleep(1)
driver.switch_to_frame("gsft_main")
time.sleep(1)
name_field = element = driver.find_element(By.XPATH, '/html/body/div[1]/div[1]/span/div/div[5]/table/tbody/tr/td/div/table/thead/tr[2]/td[3]/div/div/div/input')
name_field.send_keys("SCCM 2012 v2")
name_field.send_keys(Keys.RETURN)
time.sleep(1)
comp_identity = driver.find_element(By.XPATH, '//a[contains(text() , "SCCM 2012 v2 Computer Identity")]')
comp_identity.click()
time.sleep(3)
test_load = driver.find_element(By.XPATH, '//a[contains(text() , "Test Load 20 Records")]')
test_load.click()
time.sleep(10)
run_transform = driver.find_element(By.XPATH, '//a[contains(text() , "Run Transform")]')
run_transform.click()
time.sleep(3)
import_btn = driver.find_element(By.XPATH, '//*[@id="import_button"]')
import_btn.click()
time.sleep(1)
### HTML ####
<form action="ui_page_process.do?sys_id=d84d17080af04cc80091cff5048b6f40" id="form.d84d17080af04cc80091cff5048b6f40" method="POST">
<input name="sysparm_ck" id="sysparm_ck" type="hidden" value="88fc0b14db33d780dd62d7795e96193fb827f686fb649455da15cfd760143730135ac52f">
<link rel="stylesheet" href="styles/heisenberg/heisenberg_all.css">
<nav class="navbar navbar-default" role="navigation">
<div class="container-fluid">
<div class="navbar-header">
<span class="btn btn-default icon-chevron-left navbar-btn" onclick="back();"></span>
<h1 style="display:inline-block;" class="navbar-title">Specify Import set and Transform map</h1>
</div>
</div>
</nav>
<div style="margin-left: 20px; padding-bottom: 20px; padding-right: 20px;" name="run_transform_table" id="run_transform_table">
<div style="padding-top:20px;padding-bottom:20px;">
<table style="width:100%;">
<tbody>
<tr id="map_select">
<td>
</td>
</tr>
</tbody>
</table>
</div>
<div><button class="web" name="import_button" id="import_button" style="display:none;" type="submit" onclick="onSubmit();" classname="web">Transform</button><button class="btn btn-primary" name="import_button" id="import_button" type="submit" onclick="onSubmit();">Transform</button><span id="loading" name="loading" style="display: none"><img src="images/loading_anim2.gifx" alt="Transforming..."><strong>Transforming...</strong></span></div>
</div>
</form>
<input name="sysparm_ck" id="sysparm_ck" type="hidden" value="88fc0b14db33d780dd62d7795e96193fb827f686fb649455da15cfd760143730135ac52f">
<link rel="stylesheet" href="styles/heisenberg/heisenberg_all.css">
<nav class="navbar navbar-default" role="navigation">
<div class="container-fluid">
<div class="navbar-header">
<span class="btn btn-default icon-chevron-left navbar-btn" onclick="back();"></span>
<h1 style="display:inline-block;" class="navbar-title">Specify Import set and Transform map</h1>
</div>
</div>
</nav>
<script>function back() {
window.history.back();
}
</script>
<div style="display:none;" class="notification notification-info" id="info_message"><span id="info_message_text">1533405277173</span><button data-dismiss="alert" class="btn-icon close icon-cross"><span class="sr-only">Close</span></button></div>
<div style="display:none;" class="notification notification-warning" id="warning_message"><span id="warning_message_text">1533405277173</span><button data-dismiss="alert" class="btn-icon close icon-cross"><span class="sr-only">Close</span></button></div>
<div style="margin-left: 20px; padding-bottom: 20px; padding-right: 20px;" name="run_transform_table" id="run_transform_table">
<div class="form-group is-required" id="importset" style="overflow:hidden;padding-top:20px;">
<label class="col-sm-2 control-label" for="import_set" style="text-align:right;"><span class="required-marker"></span>Import set</label>
<span class="col-sm-4">
<div class="select2-container form-control sn-select-basic required" id="s2id_import_set">
<a href="javascript:void(0)" class="select2-choice" tabindex="-1"> <span class="select2-chosen" id="select2-chosen-1">ISET000238110 - imp_sccm2012v2_computer_id (2018-08-04 17:54:53)</span><abbr class="select2-search-choice-close"></abbr> <span class="select2-arrow" role="presentation"><b role="presentation"></b></span></a><label for="s2id_autogen1" class="select2-offscreen">Import set</label><input class="select2-focusser select2-offscreen" type="text" aria-haspopup="true" role="button" aria-labelledby="select2-chosen-1" id="s2id_autogen1">
<div class="select2-drop select2-display-none select2-with-searchbox">
<div class="select2-search"> <label for="s2id_autogen1_search" class="select2-offscreen">Import set</label> <input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" class="select2-input" role="combobox" aria-expanded="true" aria-autocomplete="list" aria-owns="select2-results-1" id="s2id_autogen1_search" placeholder=""> </div>
<ul class="select2-results" role="listbox" id="select2-results-1"> </ul>
</div>
</div>
</span>
</div>
<div style="padding-top:20px;padding-bottom:20px;">
<table style="width:100%;">
<tbody>
<tr id="map_select">
<td>
<script language="JavaScript" src="scripts/classes/GwtWindowList.jsx?v=05-10-2018_1459"></script><script language="JavaScript" src="scripts/classes/GwtSelectTable.jsx?v=05-10-2018_1459"></script><script>function map_select_sb_populate(leftzone, rightzone) {
// do nothing, we are populating the zones manually
}
</script>
<table id="map_select_sb_tbl" border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td align="center">Available maps</td>
</tr>
<tr>
<td width="40%" style="vertical-align:top; border:1px solid #999;" dropzone="true">
<div style="height: 200px; width: 100%; overflow: auto; border: 0px solid; position: relative;" id="map_select_sb_left" dropzone="true" onclick="map_select_sb_left_onclick();" readonly="false" unique="true">
<div style="width: 100%; height: 0px;"></div>
</div>
<script>function map_select_sb_left_onclick() {
;
}
</script>
</td>
<td width="20%" align="center" style="vertical-align:middle;">
<table cellspacing="3" cellpadding="0" border="0" width="100%">
<tbody>
<tr id="map_select_sb_move_right_text">
<td align="center">Add</td>
</tr>
<tr id="map_select_sb_move_right_button">
<td align="center"><a class="btn btn-default icon-chevron-right" style="margin-top: 5px; width:32px; height:32px;" onclick="map_select_sb_moveLeftToRight();"><span class="sr-only">Add</span></a></td>
</tr>
</tbody>
</table>
</td>
<td width="40%" style="vertical-align:top; border:1px solid #999;" dropzone="true">
<div style="height: 200px; width: 100%; overflow: auto; border: 0px; position: relative;" id="map_select_sb_right" dropzone="true" onclick="map_select_sb_right_onclick();" readonly="false" unique="false">
<div id="map_select_sb_left_windowList_0" dragpart="map_select_sb_left_windowList_0" class="drag_section_part selected" style="position: relative; z-index: 1; left: 0px; top: 0px;">
<table role="presentation" id="window.map_select_sb_left_windowList_0" class="gwt_window_list_window" cellspacing="0" cellpadding="0" style="padding: 0px; width: 100%; height: 20px;">
<tbody>
<tr style="vertical-align: top;">
<td>
<table class="drag_section_header_active" role="presentation" style="width: 100%; cursor: move;">
<tbody>
<tr>
<td style="display: none; top: 0px; left: 0px; vertical-align: top; white-space: nowrap;"></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr style="height: 100%; vertical-align: top; display: none;">
<td><span id="body_map_select_sb_left_windowList_0" class="widget_body" style="overflow: auto; font-weight: normal; padding: 0px; width: 100%;"></span></td>
</tr>
</tbody>
</table>
</div>
<div style="width: 100%; height: 0px;"></div>
</div>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</div>
<div><button class="web" name="import_button" id="import_button" style="display:none;" type="submit" onclick="onSubmit();" classname="web">Transform</button><button class="btn btn-primary" name="import_button" id="import_button" type="submit" onclick="onSubmit();">Transform</button><span id="loading" name="loading" style="display: none"><img src="images/loading_anim2.gifx" alt="Transforming..."><strong>Transforming...</strong></span></div>
</div>
<div class="form-group is-required" id="importset" style="overflow:hidden;padding-top:20px;">
<label class="col-sm-2 control-label" for="import_set" style="text-align:right;"><span class="required-marker"></span>Import set</label>
<span class="col-sm-4">
<div class="select2-container form-control sn-select-basic required" id="s2id_import_set">
<a href="javascript:void(0)" class="select2-choice" tabindex="-1"> <span class="select2-chosen" id="select2-chosen-1">ISET000238110 - imp_sccm2012v2_computer_id (2018-08-04 17:54:53)</span><abbr class="select2-search-choice-close"></abbr> <span class="select2-arrow" role="presentation"><b role="presentation"></b></span></a><label for="s2id_autogen1" class="select2-offscreen">Import set</label><input class="select2-focusser select2-offscreen" type="text" aria-haspopup="true" role="button" aria-labelledby="select2-chosen-1" id="s2id_autogen1">
<div class="select2-drop select2-display-none select2-with-searchbox">
<div class="select2-search"> <label for="s2id_autogen1_search" class="select2-offscreen">Import set</label> <input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" class="select2-input" role="combobox" aria-expanded="true" aria-autocomplete="list" aria-owns="select2-results-1" id="s2id_autogen1_search" placeholder=""> </div>
<ul class="select2-results" role="listbox" id="select2-results-1"> </ul>
</div>
</div>
</span>
</div>
<div style="padding-top:20px;padding-bottom:20px;">
<table style="width:100%;">
<tbody>
<tr id="map_select">
<td>
<script language="JavaScript" src="scripts/classes/GwtWindowList.jsx?v=05-10-2018_1459"></script><script language="JavaScript" src="scripts/classes/GwtSelectTable.jsx?v=05-10-2018_1459"></script><script>function map_select_sb_populate(leftzone, rightzone) {
// do nothing, we are populating the zones manually
}
</script>
<table id="map_select_sb_tbl" border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td align="center">Available maps</td>
</tr>
<tr>
<td width="40%" style="vertical-align:top; border:1px solid #999;" dropzone="true">
<div style="height: 200px; width: 100%; overflow: auto; border: 0px solid; position: relative;" id="map_select_sb_left" dropzone="true" onclick="map_select_sb_left_onclick();" readonly="false" unique="true">
<div style="width: 100%; height: 0px;"></div>
</div>
<script>function map_select_sb_left_onclick() {
;
}
</script>
</td>
<td width="20%" align="center" style="vertical-align:middle;">
<table cellspacing="3" cellpadding="0" border="0" width="100%">
<tbody>
<tr id="map_select_sb_move_right_text">
<td align="center">Add</td>
</tr>
</tbody>
</table>
</td>
<td width="40%" style="vertical-align:top; border:1px solid #999;" dropzone="true">
<div style="height: 200px; width: 100%; overflow: auto; border: 0px; position: relative;" id="map_select_sb_right" dropzone="true" onclick="map_select_sb_right_onclick();" readonly="false" unique="false">
<div id="map_select_sb_left_windowList_0" dragpart="map_select_sb_left_windowList_0" class="drag_section_part selected" style="position: relative; z-index: 1; left: 0px; top: 0px;">
<table role="presentation" id="window.map_select_sb_left_windowList_0" class="gwt_window_list_window" cellspacing="0" cellpadding="0" style="padding: 0px; width: 100%; height: 20px;">
<tbody>
<tr style="vertical-align: top;">
<td>
<table class="drag_section_header_active" role="presentation" style="width: 100%; cursor: move;">
<tbody>
<tr>
<td style="display: none; top: 0px; left: 0px; vertical-align: top; white-space: nowrap;"></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr style="height: 100%; vertical-align: top; display: none;">
<td><span id="body_map_select_sb_left_windowList_0" class="widget_body" style="overflow: auto; font-weight: normal; padding: 0px; width: 100%;"></span></td>
</tr>
</tbody>
</table>
</div>
<div style="width: 100%; height: 0px;"></div>
</div>
<script>function map_select_sb_right_onclick() {
;
}
</script>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</div>
<div><button class="web" name="import_button" id="import_button" style="display:none;" type="submit" onclick="onSubmit();" classname="web">Transform</button><button class="btn btn-primary" name="import_button" id="import_button" type="submit" onclick="onSubmit();">Transform</button><span id="loading" name="loading" style="display: none"><img src="images/loading_anim2.gifx" alt="Transforming..."><strong>Transforming...</strong></span></div>
【问题讨论】:
-
尝试添加等待元素
-
像隐式等待什么的?
-
请分享 html 代码并指出哪个元素引发了该异常
-
@anfield,使用显式等待等待元素可点击
-
听起来您为可见元素设置了错误的定位器,或者您使用的定位器找到了多个元素,其中第一个不可见。发布指向该页面的链接将有很大帮助,或者至少对相关的 HTML 有很大帮助。