環境
Microsoftedge バージョン 107.0.1418.62
Python3.9.15
Windows10
VScodeでコードを書いております。
ソースコード
Python
1from selenium.webdriver.common.by import By 2from selenium import webdriver 3 4url = "https://〇〇〇" 5driver = webdriver.Edge(executable_path="msedgedriver.exe") 6driver.implicitly_wait(30) 7driver.get(url) 8driver.maximize_window() 9xx = "/html/body/table/tbody/tr[1776]/td[2]/span/span[6]" 10driver.find_element(by = By.XPATH, value = xx).send_keys("0900")
HTML
1 <table class="list" cellspacing="0"> 2 3 4 <!-- 1日分の情報 --> 5 6 <tr> 7 <td width="25" class="date" rowspan="1" style="border-right-width:0pt;"><font color="black">21</font><input type="hidden" name="date" value="20221221" ></td> 8 <td width="20" class="date" rowspan="1" style="border-left-width:0pt;"><font color="black">水</font></td> 9 <td width="28" class="stringField"><span style="background-color:;"> </span></td> 10 <td width="50" class="numericField"> </td> 11 <td width="49" class="numericField" rowspan="1"> 12 <input type="text" name="start_time" value="0900" size="3" maxlength="4" class="time" onChange="" > 13 </td> 14 15 <td width="76" class="numericField" rowspan="1"> 16 <input type="text" name="suspend_time" value="0.75" size="4" maxlength="5" class="numeric" style="border:0pt;" tabindex="-1" readonly onChange="" > 17 18 <input type="button" name="" value="" class="" onClick="callSuspendPopup(0);" > 19 20 21 <td width="49" class="numericField" rowspan="1"> 22 <input type="text" name="end_time" value="1730" size="3" maxlength="4" class="time" onChange="" > 23 </td> 24 25 <input type="hidden" name="SUSPEND_FROM1" value="1230" > 26 <input type="hidden" name="SUSPEND_TO1" value="1315" > 27 <input type="hidden" name="SUSPEND_REASONE1" value="15" > 28 <input type="hidden" name="SUSPEND_FROM2" value="" > 29 <input type="hidden" name="SUSPEND_TO2" value="" > 30 <input type="hidden" name="SUSPEND_REASONE2" value="" > 31 <input type="hidden" name="SUSPEND_FROM3" value="" > 32 <input type="hidden" name="SUSPEND_TO3" value="" > 33 <input type="hidden" name="SUSPEND_REASONE3" value="" > 34 <input type="hidden" name="SUSPEND_FROM4" value="" > 35 <input type="hidden" name="SUSPEND_TO4" value="" > 36 <input type="hidden" name="SUSPEND_REASONE4" value="" > 37 <input type="hidden" name="SUSPEND_FROM5" value="" > 38 <input type="hidden" name="SUSPEND_TO5" value="" > 39 <input type="hidden" name="SUSPEND_REASONE5" value="" > 40 <input type="hidden" name="SUSPEND_FROM6" value="" > 41 <input type="hidden" name="SUSPEND_TO6" value="" > 42 <input type="hidden" name="SUSPEND_REASONE6" value="" > 43 <td width="54" class="numericField" rowspan="1">7.75</td> 44 <td width="66" class="numericField" rowspan="1">7.75</td> 45 <td width="54" class="numericField" rowspan="1">0.00</td> 46 <td width="66" class="numericField" rowspan="1">0.00</td> 47 <td width="52" class="numericField" rowspan="1"> </td> 48 <td width="52" class="numericField" rowspan="1"> </td> 49 <td width="52" class="numericField" rowspan="1"> </td> 50 <td width="28" rowspan="1" style="text-align:center"> 51 52 <input type="checkbox" name="all_day" value="0" onClick="" onChange="" > 53 54 </td> 55 <td width="52" class="FormField" rowspan="1" style="text-align:right"> 56 57 <input type="text" name="half_day" value="0" size="1" maxlength="1" class="numeric" onChange="" >回 58 59 </td> 60 61 <td width="40" rowspan="1" style="text-align:center"> 62 63 <input type="checkbox" name="zaitaku_kinmu_k" value="0" onClick="" onChange="" > 64 65 </td> 66 67 68 </tr> 69 70 71 <!-- 1日分の情報 --> 72 73 <tr> 74 <td width="25" class="date" rowspan="1" style="border-right-width:0pt;"><font color="black">22</font><input type="hidden" name="date" value="20221222" ></td> 75 <td width="20" class="date" rowspan="1" style="border-left-width:0pt;"><font color="black">木</font></td> 76 <td width="28" class="stringField"><span style="background-color:white;">A3</span></td> 77 <td width="50" class="numericField"> </td> 78 <td width="49" class="numericField" rowspan="1"> 79 <input type="hidden" name="start_time" value=""> 80 </td> 81 82 <td width="76" class="numericField" rowspan="1"> 83 <input type="text" name="suspend_time" value="" size="4" maxlength="5" class="numeric" style="border:0pt;" tabindex="-1" readonly onChange="" > 84 85 86 87 88 <td width="49" class="numericField" rowspan="1"> 89 <input type="hidden" name="end_time" value=""> 90 </td> 91 92 <input type="hidden" name="SUSPEND_FROM1" value="" > 93 <input type="hidden" name="SUSPEND_TO1" value="" > 94 <input type="hidden" name="SUSPEND_REASONE1" value="" > 95 <input type="hidden" name="SUSPEND_FROM2" value="" > 96 <input type="hidden" name="SUSPEND_TO2" value="" > 97 <input type="hidden" name="SUSPEND_REASONE2" value="" > 98 <input type="hidden" name="SUSPEND_FROM3" value="" > 99 <input type="hidden" name="SUSPEND_TO3" value="" > 100 <input type="hidden" name="SUSPEND_REASONE3" value="" > 101 <input type="hidden" name="SUSPEND_FROM4" value="" > 102 <input type="hidden" name="SUSPEND_TO4" value="" > 103 <input type="hidden" name="SUSPEND_REASONE4" value="" > 104 <input type="hidden" name="SUSPEND_FROM5" value="" > 105 <input type="hidden" name="SUSPEND_TO5" value="" > 106 <input type="hidden" name="SUSPEND_REASONE5" value="" > 107 <input type="hidden" name="SUSPEND_FROM6" value="" > 108 <input type="hidden" name="SUSPEND_TO6" value="" > 109 <input type="hidden" name="SUSPEND_REASONE6" value="" > 110 <td width="54" class="numericField" rowspan="1"> </td> 111 <td width="66" class="numericField" rowspan="1"> </td> 112 <td width="54" class="numericField" rowspan="1"> </td> 113 <td width="66" class="numericField" rowspan="1"> </td> 114 <td width="52" class="numericField" rowspan="1"> </td> 115 <td width="52" class="numericField" rowspan="1"> </td> 116 <td width="52" class="numericField" rowspan="1"> </td> 117 <td width="28" rowspan="1" style="text-align:center"> 118 119 <input type="checkbox" name="all_day" value="1" onClick="" onChange="" > 120 121 </td> 122 <td width="52" class="FormField" rowspan="1" style="text-align:right"> 123 124 <input type="text" name="half_day" value="0" size="1" maxlength="1" class="numeric" onChange="" >回 125 126 </td> 127 128 <td width="40" rowspan="1" style="text-align:center"> 129 130 <input type="checkbox" name="zaitaku_kinmu_k" value="1" onClick="" onChange="" > 131 132 </td> 133 134 135 </tr>
やりたい事
日付の上からname属性の"start_time"のvalueを確認していって、
値が入力されていれば、何も処理せず、次の日へ移行し、
値が入力されていなければ、0900を入力したいです。
ただし、添付画像は上から3日分の情報になります。
2日目は、valueの値が""となっていますが、
これはテキストボックスがそもそも配置されていない状態になります。
その場合は、スキップして次の日へ移行するという処理にしたいです。
やってみた事/試してみた事
XPATHを取得し、添付画像の3日間は下記だと分かったのですが、
21日 /html/body/table/tbody/tr[1776]/td[2]/span/span[6]
22日 /html/body/table/tbody/tr[1843]/td[2]/span/span[6]
23日 /html/body/table/tbody/tr[1910]/td[2]/span/span[6]
xx = "/html/body/table/tbody/tr[1776]/td[2]/span/span[6]"
driver.find_element(by = By.XPATH, value = xx).send_keys("0900")
としても
driver.find_element(by = By.XPATH, value = xx).send_keys("0900")
AttributeError: 'NoneType' object has no attribute 'send_keys'
というエラーが出ており、上手くいっておりません。
また、仮に上記のエラーが上手くいったとしても、いまいちやりたい事にある、
次の日へ移行するという処理が分からなかったため、質問させて頂きました。
諸事情により、URLを載せることが出来ず、分かりにくい質問になってしまい、
申し訳ありません。
ご教授頂ければ幸いです。宜しくお願い致します。
