使用 Selenium 从另一个框架中查找与下拉列表相关的元素 -- Python
Using Selenium to find elements related to drop down list from another frame -- Python
我一直在尝试编写一个程序来自动化我的工作。
我的任务有一系列步骤,但我卡在了一点。我不断收到 NoSuchElementException。
我尝试使用 id、class、Selenium 的名称方法,但似乎没有任何效果。我现在的代码是这样的:
from selenium import webdriver
from selenium.webdriver.common.by import By
browser = webdriver.Chrome('C:\Users\abc\AppData\Local\Programs\Python\Python36\chromedriver.exe')
browser.get("http://example.com/login.aspx")
usernameElem = browser.find_element_by_id('txtuser')
usernameElem.send_keys('admin')
passwordElem = browser.find_element_by_id('txtpassword')
passwordElem.send_keys('password')
loginElem = browser.find_element_by_id('btn_login')
loginElem.click() # follows the "Read It Online" link
browser.get("http://example.com/Reports.aspx")
subscriberslistElem = browser.find_element_by_id('ContentPlaceHolder1_rptDC_lnk_0')
subscriberslistElem.click()
browser.implicitly_wait(3)
entityElem = browser.find_element_by_id("report_Entity_ClientState")
print("Test")
entityElem.send_keys('Entity1')
browser.implicitly_wait(3)
reportElem = browser.find_element_by_class_name('selectbox')
print("Test 2")
reportElem.click()
showdataElem = browser.find_element_by_id('btn_new')
showdataElem.click()
excelElem = browser.find_element_by_id('imgExport')
excelElem.click()
print('All is well')
Link to webpage, complete files.
奇怪的是,当我以代码形式在线打开HTML文件并搜索'report_Entity_ClientState'时,没有任何结果。
我尝试访问的元素图像:
First element.
Second element.
找不到实体和报表元素。以下部分代码 return 错误。
entityElem = browser.find_element_by_id("report_Entity_ClientState")
reportElem = browser.find_element_by_class_name('selectbox')
entityElem.send_keys('Entity1')
browser.implicitly_wait(3)
HTML元素代码:
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>
</title>
<style type="text/css">
.rgDataDiv
{
height: 350px !important;
}
#report2_demo1_dateInput, #report2_demo2_dateInput
{
background: none repeat scroll 0 0 #f0f3f4;
border: 1px solid #4D87A5;
border-radius: 0.3em;
color: #296872;
font-family: "HelveticaNeue-Light" , "Helvetica Neue Light" , "Helvetica Neue" ,Helvetica,Arial, "Lucida Grande" ,sans-serif;
font-size: 14px;
font-weight: 400;
height: 1.8em;
padding: 0 0.3em;
position: relative;
text-align: center;
text-shadow: 1px 1px 0 #FFFFFF;
}
.selectbox
{
width: 175px;
height: 27px;
background-color: #FFF;
border: 1px solid #b7b7b7;
font: 400 12px/18px 'Open Sans' , sans-serif;
color: #777;
font-weight: bold;
border: 1px solid #ccc;
margin: 0em 0.5em;
padding: 0em 0.5em;
box-shadow: 0 0 1px rgba(0, 0, 0, 0.2);
}
.selectbox:hover
{
border: 1px solid #1261ac !important;
}
.selectbox option
{
padding: 5px;
}
.button
{
background-color: #23ad44;
background-image: linear-gradient(to bottom, #23ad44, #23ad44);
border: 1px solid #23ad44;
border-radius: 3px;
color: #ffffff;
display: inline-block;
font-family: arial,helvetica,sans-serif;
font-size: 12px;
font-weight: bold;
margin-left: 5px;
padding: 7px;
text-align: center;
text-decoration: none;
width: 7em;
}
.button:hover
{
background-color: #23ad44;
background-image: linear-gradient(to bottom, #23ad44, #23ad44);
border: 1px solid #23ad44;
}
</style>
<style type="text/css">
#overlay
{
background-color: #000000;
height: 100%;
left: 0;
opacity: 0.6;
position: fixed;
top: 0;
width: 100%;
z-index: 1500;
}
#theprogress
{
background-color: #000000;
border: 0 solid #CCCCCC;
height: 30px;
line-height: 30px;
opacity: 0.6;
padding: 10px;
text-align: center;
width: 300px;
}
#modalprogress
{
position: absolute;
top: 45%;
left: 50%;
margin: -11px 0 0 -150px;
color: #990000;
font-weight: bold;
font-size: 14px;
}
.RepeaterLabel
{
color: #2980b9;
}
</style>
<link href="/WebResource.axd?d=YhrvG3mKYx0qi8zmG_e2lyIXyb_ANuRBo_sKLQFJLSvTN5PZ_1mAdbAu2oYdNj8IQ2baXlFznJaZLu1FNyX1Sw2&t=634968929080000000" type="text/css" rel="stylesheet" class="Telerik_stylesheet"><link href="/WebResource.axd?d=pgzM84zOvBy03oK1BX9qj4AemgkqjvEpKd1DaZn3BmX7HYCaCPA9mDXES3WITAYhGWLhU3BijsiI-NqfoTxwKTiVY41t_WUGeTj39PR75xY1&t=634968929080000000" type="text/css" rel="stylesheet" class="Telerik_stylesheet"></head>
<body>
<form method="post" action="Rep1_SubList.aspx" id="form1">
<div class="aspNetHidden">
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="">
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="">
<input type="hidden" name="__LASTFOCUS" id="__LASTFOCUS" value="">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTIwNjA3NzE2NzEPZBYCAgMPZBYCAgEPZBYCZg9kFggCBQ8UKwACDxYEHgtfIURhdGFCb3VuZGceF0VuYWJsZUFqYXhTa2luUmVuZGVyaW5naGQPFCsAAhQrAAIPFgIeBFRleHQFA0FMTGRkFCsAAg8WBB8CBQhTUENHMDAzMx4FVmFsdWUFCFNQQ0cwMDMzZGQPFCsBAmZmFgEFd1RlbGVyaWsuV2ViLlVJLlJhZENvbWJvQm94SXRlbSwgVGVsZXJpay5XZWIuVUksIFZlcnNpb249MjAxMy4xLjIyMC40MCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj0xMjFmYWU3ODE2NWJhM2Q0FghmDw8WBB4IQ3NzQ2xhc3MFCXJjYkhlYWRlch4EXyFTQgICZGQCAQ8PFgQfBAUJcmNiRm9vdGVyHwUCAmRkAgIPDxYCHwIFA0FMTGRkAgMPDxYEHwIFCFNQQ0cwMDMzHwMFCFNQQ0cwMDMzZGQCCQ8QZGQWAWZkAgsPEGRkFgFmZAIVDzwrAA4CABQrAAJkFwEFCFBhZ2VTaXplAhQBFgIWC2RkZRQrAAALKXlUZWxlcmlrLldlYi5VSS5HcmlkQ2hpbGRMb2FkTW9kZSwgVGVsZXJpay5XZWIuVUksIFZlcnNpb249MjAxMy4xLjIyMC40MCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj0xMjFmYWU3ODE2NWJhM2Q0ATwrAAcACyl0VGVsZXJpay5XZWIuVUkuR3JpZEVkaXRNb2RlLCBUZWxlcmlrLldlYi5VSSwgVmVyc2lvbj0yMDEzLjEuMjIwLjQwLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPTEyMWZhZTc4MTY1YmEzZDQBZGRkZGYWAmYPFCsAAhQrAAIUKwACZGRkZGQYAgUeX19Db250cm9sc1JlcXVpcmVQb3N0QmFja0tleV9fFgEFDXJlcG9ydF9FbnRpdHkFDXJlcG9ydF9FbnRpdHkPFCsAAmVlZLr0AotH53uxPGSh7QymTeWwsdUnInQbJfo/1AqZAer9">
</div>
<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['form1'];
if (!theForm) {
theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
//]]>
</script>
<script src="/WebResource.axd?d=WPqzNIAf0aRvfZ51T5FqAw2&t=636265663681012204" type="text/javascript"></script>
<script src="/ScriptResource.axd?d=0-K2f-KkPKroL1v8HQRfqOW6Bm5xtYnbtzo_BRMK3-orTVPkM3P6U7R-O_kYNMldQbgeLIbAfjb5i99L3QDP87wvzxMxirCvs4zeaZ5iCvg1&t=16ab2387" type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[
if (typeof(Sys) === 'undefined') throw new Error('ASP.NET Ajax client-side framework failed to load.');
//]]>
</script>
<script src="/ScriptResource.axd?d=0-K2f-KkPKroL1v8HQRfqOW6Bm5xtYnbtzo_BRMK3-orTVPkM3P6U7R-O_kYNMldkzOjZKCZKI8dbMwhU6puwXriFBMbrnAMLgehz7nDFguuKxruf9QzOB5sQpy88shJ0&t=16ab2387" type="text/javascript"></script>
<script src="/ScriptResource.axd?d=uLRCwOuJA-xwtRRow_E7Hq0v5K1DXj8YRZ2chYicyCdnEq-SEy_US1KuLZmEnoxm0&t=ffffffffcf4a174e" type="text/javascript"></script>
<script src="/ScriptResource.axd?d=uLRCwOuJA-xwtRRow_E7Hq0v5K1DXj8YRZ2chYicyCcCRUgx0Nxj77KymelI6SbiewHQsPnET8txjQRIhxv9ow2&t=ffffffffcf4a174e" type="text/javascript"></script>
<script src="/ScriptResource.axd?d=uLRCwOuJA-xwtRRow_E7Hq0v5K1DXj8YRZ2chYicyCf49iuFjicOUhj3AUMkpbwDvPtFtRMJzCdeNbcfmY9RdA2&t=ffffffffcf4a174e" type="text/javascript"></script>
<script src="/ScriptResource.axd?d=uLRCwOuJA-xwtRRow_E7Hq0v5K1DXj8YRZ2chYicyCcStsFzhAvG6xzv928b3E8L1Pt9Gjfq_pIz-VgKJtG5wQ2&t=ffffffffcf4a174e" type="text/javascript"></script>
<script src="/ScriptResource.axd?d=uLRCwOuJA-xwtRRow_E7Hq0v5K1DXj8YRZ2chYicyCdT9MJqqpr-t50oq7GfpGoHVIJkcb_99EGhaoMesY6BL_Y4gIEI-tQ29AH-8m3OqeM1&t=ffffffffcf4a174e" type="text/javascript"></script>
<script src="/ScriptResource.axd?d=uLRCwOuJA-xwtRRow_E7Hq0v5K1DXj8YRZ2chYicyCdT9MJqqpr-t50oq7GfpGoHGGMRnTUBSrYO6OmjVxnhB1zYMtRDZSpvvOn8lbJO5tQ1&t=ffffffffcf4a174e" type="text/javascript"></script>
<script src="/ScriptResource.axd?d=uLRCwOuJA-xwtRRow_E7Hq0v5K1DXj8YRZ2chYicyCfUqwvvfXR2C1xI7mel65lGuhK3m71Yx952aE6WQ4vkzg2&t=ffffffffcf4a174e" type="text/javascript"></script>
<div class="aspNetHidden">
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWBgL/046PAQLBv5udDwLBv5udDwLO0LHzAwLP0LHzAwL9nO2QARGzTJ5Kcho1tzVM3gIXWgrV275r13MCRT/Kb4EgrVKR">
</div>
<div id="pnlMain">
<div id="UpdateProgress1" style="display:none;" role="status" aria-hidden="true">
<div id="overlay">
<div id="modalprogress">
<div id="theprogress">
<i style="background: #ffffff;" class="fa fa-spinner fa-spin fa-3x stat-elem"></i>
</div>
</div>
</div>
</div>
<script type="text/javascript">
//<![CDATA[
Sys.WebForms.PageRequestManager._initialize('scrpt1', 'form1', ['tpnlMain','pnlMain'], [], [], 1000, '');
//]]>
</script>
<div>
<div>
<table>
<tbody><tr>
<td>
<div id="report_Entity" class="RadComboBox RadComboBox_Silk" style="width:160px;white-space:normal;">
<!-- 2013.1.220.40 --><table summary="combobox" style="border-width:0;border-collapse:collapse;width:100%" class="">
<tbody><tr>
<td class="rcbInputCell rcbInputCellLeft" style="width:100%;"><input name="report_Entity" type="text" class="rcbInput radPreventDecorate rcbEmptyMessage" id="report_Entity_Input" value="Select Entity" autocomplete="off"></td><td class="rcbArrowCell rcbArrowCellRight"><a id="report_Entity_Arrow" style="overflow: hidden;display: block;position: relative;outline: none;">select</a></td>
</tr>
</tbody></table><div class="rcbSlide" style="z-index:6000;"><div id="report_Entity_DropDown" class="RadComboBoxDropDown RadComboBoxDropDown_Silk " style="display:none;"><div class="rcbScroll rcbWidth" style="height:200px;width:100%;"><ul class="rcbList" style="list-style:none;margin:0;padding:0;zoom:1;"><li class="rcbItem ">ALL</li><li class="rcbItem ">SPCG0033</li></ul></div></div></div><input id="report_Entity_ClientState" name="report_Entity_ClientState" type="hidden" autocomplete="off">
</div>
</td>
<td>
<select name="report_Type" onchange="javascript:setTimeout('__doPostBack(\'report_Type\',\'\')', 0)" id="report_Type" class="selectbox">
<option selected="selected" value="">Report Type</option>
<option value="1">Total Subscriber List</option>
<option value="2">Subscriber List with Active Package</option>
</select>
</td>
<td>
</td>
<td>
<input type="submit" name="btn_new" value="Show Data" id="btn_new" class="button">
</td>
<td>
</td>
<td>
</td>
</tr>
</tbody></table>
</div>
<span id="lbl_error" style="color:White;font-weight:bold;"></span>
<div>
</div>
</div>
</div>
<script type="text/javascript">
//<![CDATA[
Sys.Application.add_init(function() {
$create(Sys.UI._UpdateProgress, {"associatedUpdatePanelId":"pnlMain","displayAfter":0,"dynamicLayout":true}, null, null, $get("UpdateProgress1"));
});
WebForm_InitCallback();Sys.Application.add_init(function() {
$create(Telerik.Web.UI.RadComboBox, {"_dropDownWidth":0,"_height":200,"_postBackReference":"__doPostBack(\u0027report_Entity\u0027,\u0027arguments\u0027)","_skin":"Silk","_uniqueId":"report_Entity","clientStateFieldID":"report_Entity_ClientState","collapseAnimation":"{\"duration\":450}","emptyMessage":"Select Entity","expandAnimation":"{\"duration\":450}","itemData":[{},{"value":"SPCG0033"}],"localization":"{\"AllItemsCheckedString\":\"All items checked\",\"ItemsCheckedString\":\"items checked\",\"CheckAllString\":\"Check All\"}","markFirstMatch":true}, null, null, $get("report_Entity"));
});
//]]>
</script>
</form>
</body></html>
如果您查看 <input id="report_Entity_ClientState" ... >
节点,则该类型是隐藏的。所以我们必须先取消隐藏 WebElement 并按如下方式发送字符:
entityElem = browser.find_element_by_xpath("//input[@id='report_Entity_ClientState']")
browser.execute_script("arguments[0].removeAttribute('type')", entityElem);
entityElem.send_keys('Entity1')
browser.switch_to.frame("ContentPlaceHolder1_myIframe")
我不得不在尝试查找元素之前添加这一行。现在@DebanjanB 和@Ratmir Asanov 提到的所有方法都可以完美运行。感谢您一直以来的支持。
我一直在尝试编写一个程序来自动化我的工作。 我的任务有一系列步骤,但我卡在了一点。我不断收到 NoSuchElementException。 我尝试使用 id、class、Selenium 的名称方法,但似乎没有任何效果。我现在的代码是这样的:
from selenium import webdriver
from selenium.webdriver.common.by import By
browser = webdriver.Chrome('C:\Users\abc\AppData\Local\Programs\Python\Python36\chromedriver.exe')
browser.get("http://example.com/login.aspx")
usernameElem = browser.find_element_by_id('txtuser')
usernameElem.send_keys('admin')
passwordElem = browser.find_element_by_id('txtpassword')
passwordElem.send_keys('password')
loginElem = browser.find_element_by_id('btn_login')
loginElem.click() # follows the "Read It Online" link
browser.get("http://example.com/Reports.aspx")
subscriberslistElem = browser.find_element_by_id('ContentPlaceHolder1_rptDC_lnk_0')
subscriberslistElem.click()
browser.implicitly_wait(3)
entityElem = browser.find_element_by_id("report_Entity_ClientState")
print("Test")
entityElem.send_keys('Entity1')
browser.implicitly_wait(3)
reportElem = browser.find_element_by_class_name('selectbox')
print("Test 2")
reportElem.click()
showdataElem = browser.find_element_by_id('btn_new')
showdataElem.click()
excelElem = browser.find_element_by_id('imgExport')
excelElem.click()
print('All is well')
Link to webpage, complete files.
奇怪的是,当我以代码形式在线打开HTML文件并搜索'report_Entity_ClientState'时,没有任何结果。 我尝试访问的元素图像:
First element.
Second element.
找不到实体和报表元素。以下部分代码 return 错误。
entityElem = browser.find_element_by_id("report_Entity_ClientState")
reportElem = browser.find_element_by_class_name('selectbox')
entityElem.send_keys('Entity1')
browser.implicitly_wait(3)
HTML元素代码:
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>
</title>
<style type="text/css">
.rgDataDiv
{
height: 350px !important;
}
#report2_demo1_dateInput, #report2_demo2_dateInput
{
background: none repeat scroll 0 0 #f0f3f4;
border: 1px solid #4D87A5;
border-radius: 0.3em;
color: #296872;
font-family: "HelveticaNeue-Light" , "Helvetica Neue Light" , "Helvetica Neue" ,Helvetica,Arial, "Lucida Grande" ,sans-serif;
font-size: 14px;
font-weight: 400;
height: 1.8em;
padding: 0 0.3em;
position: relative;
text-align: center;
text-shadow: 1px 1px 0 #FFFFFF;
}
.selectbox
{
width: 175px;
height: 27px;
background-color: #FFF;
border: 1px solid #b7b7b7;
font: 400 12px/18px 'Open Sans' , sans-serif;
color: #777;
font-weight: bold;
border: 1px solid #ccc;
margin: 0em 0.5em;
padding: 0em 0.5em;
box-shadow: 0 0 1px rgba(0, 0, 0, 0.2);
}
.selectbox:hover
{
border: 1px solid #1261ac !important;
}
.selectbox option
{
padding: 5px;
}
.button
{
background-color: #23ad44;
background-image: linear-gradient(to bottom, #23ad44, #23ad44);
border: 1px solid #23ad44;
border-radius: 3px;
color: #ffffff;
display: inline-block;
font-family: arial,helvetica,sans-serif;
font-size: 12px;
font-weight: bold;
margin-left: 5px;
padding: 7px;
text-align: center;
text-decoration: none;
width: 7em;
}
.button:hover
{
background-color: #23ad44;
background-image: linear-gradient(to bottom, #23ad44, #23ad44);
border: 1px solid #23ad44;
}
</style>
<style type="text/css">
#overlay
{
background-color: #000000;
height: 100%;
left: 0;
opacity: 0.6;
position: fixed;
top: 0;
width: 100%;
z-index: 1500;
}
#theprogress
{
background-color: #000000;
border: 0 solid #CCCCCC;
height: 30px;
line-height: 30px;
opacity: 0.6;
padding: 10px;
text-align: center;
width: 300px;
}
#modalprogress
{
position: absolute;
top: 45%;
left: 50%;
margin: -11px 0 0 -150px;
color: #990000;
font-weight: bold;
font-size: 14px;
}
.RepeaterLabel
{
color: #2980b9;
}
</style>
<link href="/WebResource.axd?d=YhrvG3mKYx0qi8zmG_e2lyIXyb_ANuRBo_sKLQFJLSvTN5PZ_1mAdbAu2oYdNj8IQ2baXlFznJaZLu1FNyX1Sw2&t=634968929080000000" type="text/css" rel="stylesheet" class="Telerik_stylesheet"><link href="/WebResource.axd?d=pgzM84zOvBy03oK1BX9qj4AemgkqjvEpKd1DaZn3BmX7HYCaCPA9mDXES3WITAYhGWLhU3BijsiI-NqfoTxwKTiVY41t_WUGeTj39PR75xY1&t=634968929080000000" type="text/css" rel="stylesheet" class="Telerik_stylesheet"></head>
<body>
<form method="post" action="Rep1_SubList.aspx" id="form1">
<div class="aspNetHidden">
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="">
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="">
<input type="hidden" name="__LASTFOCUS" id="__LASTFOCUS" value="">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTIwNjA3NzE2NzEPZBYCAgMPZBYCAgEPZBYCZg9kFggCBQ8UKwACDxYEHgtfIURhdGFCb3VuZGceF0VuYWJsZUFqYXhTa2luUmVuZGVyaW5naGQPFCsAAhQrAAIPFgIeBFRleHQFA0FMTGRkFCsAAg8WBB8CBQhTUENHMDAzMx4FVmFsdWUFCFNQQ0cwMDMzZGQPFCsBAmZmFgEFd1RlbGVyaWsuV2ViLlVJLlJhZENvbWJvQm94SXRlbSwgVGVsZXJpay5XZWIuVUksIFZlcnNpb249MjAxMy4xLjIyMC40MCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj0xMjFmYWU3ODE2NWJhM2Q0FghmDw8WBB4IQ3NzQ2xhc3MFCXJjYkhlYWRlch4EXyFTQgICZGQCAQ8PFgQfBAUJcmNiRm9vdGVyHwUCAmRkAgIPDxYCHwIFA0FMTGRkAgMPDxYEHwIFCFNQQ0cwMDMzHwMFCFNQQ0cwMDMzZGQCCQ8QZGQWAWZkAgsPEGRkFgFmZAIVDzwrAA4CABQrAAJkFwEFCFBhZ2VTaXplAhQBFgIWC2RkZRQrAAALKXlUZWxlcmlrLldlYi5VSS5HcmlkQ2hpbGRMb2FkTW9kZSwgVGVsZXJpay5XZWIuVUksIFZlcnNpb249MjAxMy4xLjIyMC40MCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj0xMjFmYWU3ODE2NWJhM2Q0ATwrAAcACyl0VGVsZXJpay5XZWIuVUkuR3JpZEVkaXRNb2RlLCBUZWxlcmlrLldlYi5VSSwgVmVyc2lvbj0yMDEzLjEuMjIwLjQwLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPTEyMWZhZTc4MTY1YmEzZDQBZGRkZGYWAmYPFCsAAhQrAAIUKwACZGRkZGQYAgUeX19Db250cm9sc1JlcXVpcmVQb3N0QmFja0tleV9fFgEFDXJlcG9ydF9FbnRpdHkFDXJlcG9ydF9FbnRpdHkPFCsAAmVlZLr0AotH53uxPGSh7QymTeWwsdUnInQbJfo/1AqZAer9">
</div>
<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['form1'];
if (!theForm) {
theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
//]]>
</script>
<script src="/WebResource.axd?d=WPqzNIAf0aRvfZ51T5FqAw2&t=636265663681012204" type="text/javascript"></script>
<script src="/ScriptResource.axd?d=0-K2f-KkPKroL1v8HQRfqOW6Bm5xtYnbtzo_BRMK3-orTVPkM3P6U7R-O_kYNMldQbgeLIbAfjb5i99L3QDP87wvzxMxirCvs4zeaZ5iCvg1&t=16ab2387" type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[
if (typeof(Sys) === 'undefined') throw new Error('ASP.NET Ajax client-side framework failed to load.');
//]]>
</script>
<script src="/ScriptResource.axd?d=0-K2f-KkPKroL1v8HQRfqOW6Bm5xtYnbtzo_BRMK3-orTVPkM3P6U7R-O_kYNMldkzOjZKCZKI8dbMwhU6puwXriFBMbrnAMLgehz7nDFguuKxruf9QzOB5sQpy88shJ0&t=16ab2387" type="text/javascript"></script>
<script src="/ScriptResource.axd?d=uLRCwOuJA-xwtRRow_E7Hq0v5K1DXj8YRZ2chYicyCdnEq-SEy_US1KuLZmEnoxm0&t=ffffffffcf4a174e" type="text/javascript"></script>
<script src="/ScriptResource.axd?d=uLRCwOuJA-xwtRRow_E7Hq0v5K1DXj8YRZ2chYicyCcCRUgx0Nxj77KymelI6SbiewHQsPnET8txjQRIhxv9ow2&t=ffffffffcf4a174e" type="text/javascript"></script>
<script src="/ScriptResource.axd?d=uLRCwOuJA-xwtRRow_E7Hq0v5K1DXj8YRZ2chYicyCf49iuFjicOUhj3AUMkpbwDvPtFtRMJzCdeNbcfmY9RdA2&t=ffffffffcf4a174e" type="text/javascript"></script>
<script src="/ScriptResource.axd?d=uLRCwOuJA-xwtRRow_E7Hq0v5K1DXj8YRZ2chYicyCcStsFzhAvG6xzv928b3E8L1Pt9Gjfq_pIz-VgKJtG5wQ2&t=ffffffffcf4a174e" type="text/javascript"></script>
<script src="/ScriptResource.axd?d=uLRCwOuJA-xwtRRow_E7Hq0v5K1DXj8YRZ2chYicyCdT9MJqqpr-t50oq7GfpGoHVIJkcb_99EGhaoMesY6BL_Y4gIEI-tQ29AH-8m3OqeM1&t=ffffffffcf4a174e" type="text/javascript"></script>
<script src="/ScriptResource.axd?d=uLRCwOuJA-xwtRRow_E7Hq0v5K1DXj8YRZ2chYicyCdT9MJqqpr-t50oq7GfpGoHGGMRnTUBSrYO6OmjVxnhB1zYMtRDZSpvvOn8lbJO5tQ1&t=ffffffffcf4a174e" type="text/javascript"></script>
<script src="/ScriptResource.axd?d=uLRCwOuJA-xwtRRow_E7Hq0v5K1DXj8YRZ2chYicyCfUqwvvfXR2C1xI7mel65lGuhK3m71Yx952aE6WQ4vkzg2&t=ffffffffcf4a174e" type="text/javascript"></script>
<div class="aspNetHidden">
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWBgL/046PAQLBv5udDwLBv5udDwLO0LHzAwLP0LHzAwL9nO2QARGzTJ5Kcho1tzVM3gIXWgrV275r13MCRT/Kb4EgrVKR">
</div>
<div id="pnlMain">
<div id="UpdateProgress1" style="display:none;" role="status" aria-hidden="true">
<div id="overlay">
<div id="modalprogress">
<div id="theprogress">
<i style="background: #ffffff;" class="fa fa-spinner fa-spin fa-3x stat-elem"></i>
</div>
</div>
</div>
</div>
<script type="text/javascript">
//<![CDATA[
Sys.WebForms.PageRequestManager._initialize('scrpt1', 'form1', ['tpnlMain','pnlMain'], [], [], 1000, '');
//]]>
</script>
<div>
<div>
<table>
<tbody><tr>
<td>
<div id="report_Entity" class="RadComboBox RadComboBox_Silk" style="width:160px;white-space:normal;">
<!-- 2013.1.220.40 --><table summary="combobox" style="border-width:0;border-collapse:collapse;width:100%" class="">
<tbody><tr>
<td class="rcbInputCell rcbInputCellLeft" style="width:100%;"><input name="report_Entity" type="text" class="rcbInput radPreventDecorate rcbEmptyMessage" id="report_Entity_Input" value="Select Entity" autocomplete="off"></td><td class="rcbArrowCell rcbArrowCellRight"><a id="report_Entity_Arrow" style="overflow: hidden;display: block;position: relative;outline: none;">select</a></td>
</tr>
</tbody></table><div class="rcbSlide" style="z-index:6000;"><div id="report_Entity_DropDown" class="RadComboBoxDropDown RadComboBoxDropDown_Silk " style="display:none;"><div class="rcbScroll rcbWidth" style="height:200px;width:100%;"><ul class="rcbList" style="list-style:none;margin:0;padding:0;zoom:1;"><li class="rcbItem ">ALL</li><li class="rcbItem ">SPCG0033</li></ul></div></div></div><input id="report_Entity_ClientState" name="report_Entity_ClientState" type="hidden" autocomplete="off">
</div>
</td>
<td>
<select name="report_Type" onchange="javascript:setTimeout('__doPostBack(\'report_Type\',\'\')', 0)" id="report_Type" class="selectbox">
<option selected="selected" value="">Report Type</option>
<option value="1">Total Subscriber List</option>
<option value="2">Subscriber List with Active Package</option>
</select>
</td>
<td>
</td>
<td>
<input type="submit" name="btn_new" value="Show Data" id="btn_new" class="button">
</td>
<td>
</td>
<td>
</td>
</tr>
</tbody></table>
</div>
<span id="lbl_error" style="color:White;font-weight:bold;"></span>
<div>
</div>
</div>
</div>
<script type="text/javascript">
//<![CDATA[
Sys.Application.add_init(function() {
$create(Sys.UI._UpdateProgress, {"associatedUpdatePanelId":"pnlMain","displayAfter":0,"dynamicLayout":true}, null, null, $get("UpdateProgress1"));
});
WebForm_InitCallback();Sys.Application.add_init(function() {
$create(Telerik.Web.UI.RadComboBox, {"_dropDownWidth":0,"_height":200,"_postBackReference":"__doPostBack(\u0027report_Entity\u0027,\u0027arguments\u0027)","_skin":"Silk","_uniqueId":"report_Entity","clientStateFieldID":"report_Entity_ClientState","collapseAnimation":"{\"duration\":450}","emptyMessage":"Select Entity","expandAnimation":"{\"duration\":450}","itemData":[{},{"value":"SPCG0033"}],"localization":"{\"AllItemsCheckedString\":\"All items checked\",\"ItemsCheckedString\":\"items checked\",\"CheckAllString\":\"Check All\"}","markFirstMatch":true}, null, null, $get("report_Entity"));
});
//]]>
</script>
</form>
</body></html>
如果您查看 <input id="report_Entity_ClientState" ... >
节点,则该类型是隐藏的。所以我们必须先取消隐藏 WebElement 并按如下方式发送字符:
entityElem = browser.find_element_by_xpath("//input[@id='report_Entity_ClientState']")
browser.execute_script("arguments[0].removeAttribute('type')", entityElem);
entityElem.send_keys('Entity1')
browser.switch_to.frame("ContentPlaceHolder1_myIframe")
我不得不在尝试查找元素之前添加这一行。现在@DebanjanB 和@Ratmir Asanov 提到的所有方法都可以完美运行。感谢您一直以来的支持。