Как позвонить в стол используя Selenium в Python - PullRequest
0 голосов
/ 13 марта 2020

Я совсем новичок в Python и Selenium. Я искал и экспериментировал в течение недели, но я застрял, мне действительно нужна ваша помощь.

Вот что я пытаюсь сделать:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time 
import csv

#prepare the csv file
csv_file = open('skapapa.csv','w',newline='')
csv_writer = csv.writer(csv_file)
#csv_writer.writerow(['Products', 'Price'])

passwordStr = 'adminHW'
usernameStr='root'

chrome_path = r'C:\Users\wana isa\chromedriver_win32\chromedriver.exe'
browser = webdriver.Chrome(executable_path=r'C:\Users\wana isa\chromedriver_win32\chromedriver.exe')
browser.get(('http://19*.***.***/'))
browser.get(('http://19*.***.***/index.asp'))
# wait for transition then continue to fill items
time.sleep(2)
password = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.ID, 'txt_Password')))
password.send_keys(passwordStr)
username = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.ID, 'txt_Username')))
username.send_keys(usernameStr)

signInButton = browser.find_element_by_id('button')
signInButton.click()

time.sleep(6)
MainTab=browser.find_element_by_css_selector("input[name='mainli_waninfo'][value='0']").click()
SubTab=browser.find_element_by_css_selector("input[name='subli_waninfo'][value='0']").click()
table_id = browser.find_element(By.ID, 'func_title')
rows = table_id.find_elements(By.TAG_NAME, "tr") # get all of the rows in the table
for row in rows:
    # Get the columns (all the column 2)        
    col = row.find_elements(By.TAG_NAME, "td")[1] #note: index start from 0, 1 is col 2
    print (col.text) 


browser.quit()

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

Мне нужно получить информацию о таблице в меню состояния. прямо здесь:

enter image description here

это источник html для вкладки

 <ul>
    <li value="0" name="mainli_waninfo" class="hover">
    <div class="tabBtnLeft"></div><div class="tabBtnCenter" name="maindiv_waninfo">Status</div>
    <div class="tabBtnRight"></div></li><li value="1" name="mainli_wan"><div class="tabBtnLeft"></div>
    <div class="tabBtnCenter" name="maindiv_wan">WAN</div><div class="tabBtnRight"></div></li>
    <li value="2" name="mainli_dhcp"><div class="tabBtnLeft"></div>
    <div class="tabBtnCenter" name="maindiv_dhcp">LAN</div>
    <div class="tabBtnRight"></div></li>
    <li value="3" name="mainli_macfilter"><div class="tabBtnLeft"></div>
    <div class="tabBtnCenter" name="maindiv_macfilter">Security</div>
    <div class="tabBtnRight"></div></li><li value="4" name="mainli_dscptopbit">
    <div class="tabBtnLeft"></div><div class="tabBtnCenter" name="maindiv_dscptopbit">Network Application</div><div class="tabBtnRight"></div>
    </li><li value="5" name="mainli_reset" class=""><div class="tabBtnLeft"></div><div class="tabBtnCenter" name="maindiv_reset">System Tools</div>
    <div class="tabBtnRight">
   </div>
   </li>
</ul> 

это источник html для боковой вкладки

<div id="nav" class="others" style="height: 595px;"> 
<ul>
<li value="0" name="subli_waninfo">
<div name="subdiv_waninfo">WAN Information</div>
</li>
<li value="1" name="subli_voipmaintain">
<div name="subdiv_voipmaintain">VoIP Information</div></li>
<li value="2" name="subli_ethinfo">
<div name="subdiv_ethinfo">Eth Port Information</div></li>
<li value="3" name="subli_opticinfo"><div name="subdiv_opticinfo">Optical Information</div></li>
<li value="4" name="subli_deviceinfo" class="hover"><div name="subdiv_deviceinfo">Device Information</div></li>
<li value="5" name="subli_bssinfo"><div name="subdiv_bssinfo">Service Provisioning Status</div></li>
</ul> 
</div>

это источник html для таблицы

<form id="deviceInfoForm" name="deviceInfoForm">
<table id="deviceInfoFormPanel" width="100%" border="0" cellpadding="0" cellspacing="1" class="tabal_noborder_bg">
</table>
<script>
var TableClass = new stTableClass("width_per25", "table_right align_left","ltr");
var deviceInfoFormList = new Array();
deviceInfoFormList = HWGetLiIdListByForm("deviceInfoForm",null);
if(typeof(DeviceinfoReload) == "undefined")
{
DeviceinfoReload = null;
}
HWParsePageControlByID("deviceInfoForm",TableClass,DevInfoDes,DeviceinfoReload);
document.getElementById('td1_2').innerHTML = htmlencode(deviceInfo.ModelName);
document.getElementById('td2_2').innerHTML = htmlencode(deviceInfo.Description);
GetSnOrMacInfo();
GetIMEI();
document.getElementById('td4_2').innerHTML = htmlencode(deviceInfo.HardwareVersion);
document.getElementById('td5_2').innerHTML = htmlencode(deviceInfo.SoftwareVersion);
document.getElementById('td6_2').innerHTML = htmlencode(deviceInfo.ManufactureInfo);
GetONTRegisterStatus();
GetOntId();
GetCpuUsed();
GetMemUsed();
document.getElementById('td11_2').innerHTML = htmlencode(ONTUserServices);
if(CfgMode.toUpperCase() != 'SINGTEL')
{
GetCustomizeInfo();
}
document.getElementById('td15_2').innerHTML = htmlencode(deviceTag);

</script>
<div id="divTabledeviceInfoForm" class="configborder">
<table id="TabledeviceInfoForm" width="100%" cellpadding="0" cellspacing="1" class="tabal_noborder_bg">
<tbody>
<tr border="1" id="td16_2Row" style="display: none;">
<td class="table_title width_per25" id="td16_2Colleft">undefined</td>
<td id="td16_2" bindfield="td16_2" realtype="HtmlText" class="table_right table_right align_left"></td></tr>
<tr border="1" id="td1_2Row"><td class="table_title width_per25" id="td1_2Colleft">Device Type:</td>
<td id="td1_2" bindfield="td1_2" realtype="HtmlText" class="table_right table_right align_left">HG8240H</td></tr>
<tr border="1" id="td2_2Row"><td class="table_title width_per25" id="td2_2Colleft">Description:</td>
<td id="td2_2" bindfield="td2_2" realtype="HtmlText" class="table_right table_right align_left">EchoLife HG8240H GPON Terminal (CLASS B+/PRODUCT ID:2150083100EGH1000195/CHIP:00060020161217)</td></tr>
<tr border="1" id="td3_2Row">
<td class="table_title width_per25" id="td3_2Colleft">SN:</td>
<td id="td3_2" bindfield="td3_2" realtype="HtmlText" class="table_right table_right align_left">48575443ADE72889 (HWTCADE72889)</td></tr>
<tr border="1" id="td17_2Row" style="display: none;">
<td class="table_title width_per25" id="td17_2Colleft">undefined</td>
<td id="td17_2" bindfield="td17_2" realtype="HtmlText" class="table_right table_right align_left"></td></tr>
<tr border="1" id="td4_2Row"><td class="table_title width_per25" id="td4_2Colleft">Hardware Version:</td>
<td id="td4_2" bindfield="td4_2" realtype="HtmlText" class="table_right table_right align_left">BF9.A</td></tr>
<tr border="1" id="td5_2Row"><td class="table_title width_per25" id="td5_2Colleft">Software Version:</td>
<td id="td5_2" bindfield="td5_2" realtype="HtmlText" class="table_right table_right align_left">V3R017C10S100</td></tr>
<tr border="1" id="td6_2Row"><td class="table_title width_per25" id="td6_2Colleft">Manufacture Info:</td>
<td id="td6_2" bindfield="td6_2" realtype="HtmlText" class="table_right table_right align_left">2150083100EGH1000195.C402</td></tr>
<tr border="1" id="td7_2Row"><td class="table_title width_per25" id="td7_2Colleft">ONT Registration Status:</td>
<td id="td7_2" bindfield="td7_2" realtype="HtmlText" class="table_right table_right align_left">O1(Initial state)</td></tr>
<tr border="1" id="td8_2Row"><td class="table_title width_per25" id="td8_2Colleft">ONT ID:</td>
<td id="td8_2" bindfield="td8_2" realtype="HtmlText" class="table_right table_right align_left">255</td></tr>
<tr border="1" id="td9_2Row"><td class="table_title width_per25" id="td9_2Colleft">CPU Usage:</td>
<td id="td9_2" bindfield="td9_2" realtype="HtmlText" class="table_right table_right align_left">12%</td></tr>
<tr border="1" id="td10_2Row"><td class="table_title width_per25" id="td10_2Colleft">Memory Usage:</td>
<td id="td10_2" bindfield="td10_2" realtype="HtmlText" class="table_right table_right align_left">54%</td></tr>
<tr border="1" id="td11_2Row" style="display: none;">
<td class="table_title width_per25" id="td11_2Colleft">XML Alias:</td>
<td id="td11_2" bindfield="td11_2" realtype="HtmlText" class="table_right table_right align_left"></td></tr>
<tr border="1" id="ShowTimeRow" style="display: none;">
<td class="table_title width_per25" id="ShowTimeColleft">Device Runtime:</td>
<td id="ShowTime" bindfield="ShowTime" realtype="HtmlText" class="table_right table_right align_left"></td></tr>
<tr border="1" id="td13_2Row"><td class="table_title width_per25" id="td13_2Colleft">Custom Info:</td>
<td id="td13_2" bindfield="td13_2" realtype="HtmlText" class="table_right table_right align_left">COMMON</td></tr>
<tr border="1" id="td14_2Row" style="display: none;">
<td class="table_title width_per25" id="td14_2Colleft">System Time:</td>
<td id="td14_2" bindfield="td14_2" realtype="HtmlText" class="table_right table_right align_left">1981-01-01 07:31:55+00:00</td></tr>
<tr border="1" id="td15_2Row" style="display: none;"><td class="table_title width_per25" id="td15_2Colleft">undefined</td>
<td id="td15_2" bindfield="td15_2" realtype="HtmlText" class="table_right table_right align_left"></td></tr>
</tbody></table></div>
</form>

, но я получил ошибку

** повысить TimeoutException ( сообщение, экран, stacktrace) TimeoutException NoSuchElementException: нет такого элемента: невозможно найти элемент: {"method": "css selector", "selector": "input [name = 'mainli_waninfo'] [value = '0'] "}
(Информация о сеансе: chrome = 80.0.3987.132) **

Может кто-нибудь, пожалуйста, помогите мне, мне действительно нужна ваша помощь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...