我正在尝试编写一个Python脚本来自动更改我的路由器站点(10.0.0.2)中的Wi-Fi密码。我使用Selenium而且我一直在打砖墙,因为我找不到一些元素。非常感谢您的帮助。我将在下面提供调试所需的所有资源:
browser.find_element_by_xpath('//input[@type="submit"]').send_keys(Keys.ENTER)`
#Locate Advanced Tab --1
browser.find_element_by_name("Advanced").click()
#Locate Advanced Tab --2
#tt1 = browser.find_element_by_xpath("//td[@id='topnav1']")
#tt1.click()
[1]#Locates the the advance tab on the page -- 3
#adv = browser.find_element_by_id('topnav1')
#adv.send_keys(Keys.RETURN)
这是" Advanced"的代码。我的路由器中的标签:
<td id="topnav1" class="topnavoff" width="140"><a href="javascript:ontopnav('1')">Advanced</a></td>
browser.find_element_by_link_text("Advanced").click()
追踪(最近一次通话): File&#34; celenium.py&#34;,第22行,in browser.find_element_by_link_text(&#34;高级&#34)。单击() 文件&#34; C:\ Users \ Aesop \ AppData \ Local \ Programs \ Python \ Python36-32 \ lib \ site-packages \ selenium \ webdriver \ remote \ webdriver.py&#34;,第337行,在find_element_by_link_text中 return self.find_element(by = By.LINK_TEXT,value = link_text) 文件&#34; C:\ Users \ Aesop \ AppData \ Local \ Programs \ Python \ Python36-32 \ lib \ site-packages \ selenium \ webdriver \ remote \ webdriver.py&#34;,第791行,在find_element中 &#39;价值&#39;:价值})[&#39;价值&#39;] 文件&#34; C:\ Users \ Aesop \ AppData \ Local \ Programs \ Python \ Python36-32 \ lib \ site-packages \ selenium \ webdriver \ remote \ webdriver.py&#34;,第256行,执行中 self.error_handler.check_response(响应) 文件&#34; C:\ Users \ Aesop \ AppData \ Local \ Programs \ Python \ Python36-32 \ lib \ site-packages \ selenium \ webdriver \ remote \ errorhandler.py&#34;,第194行,在check_response中 提出exception_class(消息,屏幕,堆栈跟踪) selenium.common.exceptions.NoSuchElementException:消息:无法找到元素:高级
browser.find_element_by_css_selector("#topnav1>a").click()
追踪(最近一次通话): 文件&#34; celenium.py&#34;,第20行,in browser.find_element_by_css_selector(&#34;#topnav1&gt;一种&#34)。单击() 在find_element_by_css_selector中的文件&#34; C:\ Users \ Aesop \ AppData \ Local \ Programs \ Python \ Python36-32 \ lib \ site-packages \ selenium \ webdriver \ remote \ webdriver.py&#34;,第457行 return self.find_element(by = By.CSS_SELECTOR,value = css_selector) 文件&#34; C:\ Users \ Aesop \ AppData \ Local \ Programs \ Python \ Python36-32 \ lib \ site-packages \ selenium \ webdriver \ remote \ webdriver.py&#34;,第791行,在find_element中 &#39;价值&#39;:价值})[&#39;价值&#39;] 文件&#34; C:\ Users \ Aesop \ AppData \ Local \ Programs \ Python \ Python36-32 \ lib \ site-packages \ selenium \ webdriver \ remote \ webdriver.py&#34;,第256行,执行中 self.error_handler.check_response(响应) 文件&#34; C:\ Users \ Aesop \ AppData \ Local \ Programs \ Python \ Python36-32 \ lib \ site-packages \ selenium \ webdriver \ remote \ errorhandler.py&#34;,第194行,在check_response中 提出exception_class(消息,屏幕,堆栈跟踪) selenium.common.exceptions.NoSuchElementException:消息:无法找到元素:#topnav1&gt; a
browser.find_element_by_css_selector("td.topnavoff#topnav1 > a ").click()
追踪(最近一次通话): File&#34; celenium.py&#34;,第22行,in browser.find_element_by_css_selector(&#34; td.topnavoff#topnav1&gt; a&#34;)。click() 在find_element_by_css_selector中的文件&#34; C:\ Users \ Aesop \ AppData \ Local \ Programs \ Python \ Python36-32 \ lib \ site-packages \ selenium \ webdriver \ remote \ webdriver.py&#34;,第457行 return self.find_element(by = By.CSS_SELECTOR,value = css_selector) 文件&#34; C:\ Users \ Aesop \ AppData \ Local \ Programs \ Python \ Python36-32 \ lib \ site-packages \ selenium \ webdriver \ remote \ webdriver.py&#34;,第791行,在find_element中 &#39;价值&#39;:价值})[&#39;价值&#39;] 文件&#34; C:\ Users \ Aesop \ AppData \ Local \ Programs \ Python \ Python36-32 \ lib \ site-packages \ selenium \ webdriver \ remote \ webdriver.py&#34;,第256行,执行中 self.error_handler.check_response(响应) 文件&#34; C:\ Users \ Aesop \ AppData \ Local \ Programs \ Python \ Python36-32 \ lib \ site-packages \ selenium \ webdriver \ remote \ errorhandler.py&#34;,第194行,在check_response中 提出exception_class(消息,屏幕,堆栈跟踪) selenium.common.exceptions.NoSuchElementException:消息:无法找到元素:td.topnavoff #topnav1&gt;一个
<table id=topnav_container2 cellspacing=0 border=0>
<tbody>
<tr>
<td style="width: 1px; background-color: white"></td>
<td id=modnum rowspan=2><img alt="" src="pic/DSL-G225.gif"></td>
<td style="width: 2px; background-color: white"></td>
<td id=topnav0 class=topnavon width=140 rowspan=2><a href="javascript:ontopnav('0')" >Setup</a></td>
<td style="width: 2px; background-color: white"></td>
<td id=topnav1 class=topnavoff width=140><a href="javascript:ontopnav('1')">Advanced</a></td>
<td style="width: 2px; background-color: white"></td>
<td id=topnav2 class=topnavoff width=140><a href="javascript:ontopnav('2')">Maintenance</a></td>
<td style="width: 2px; background-color: white"></td>
<td id=topnav3 class=topnavoff width=140><a href="javascript:ontopnav('3')">Status</a></td>
<td style="width: 2px; background-color: white"></td>
<td id=topnav4 class=topnavoff width=140><a href="javascript:ontopnav('4')">Help</a></td>
<td style="width: 2px; background-color: white"></td>
</tr>
<tr>
<td></td>
<td style="background-color: #404343"></td>
<td style="background-color: #404343"></td>
<td style="background-color: #404343"></td>
<td style="background-color: #404343"></td>
<td style="background-color: #404343"></td>
<td style="background-color: #404343"></td>
<td style="background-color: #404343"></td>
<td style="background-color: #404343"></td>
<td style="background-color: #404343"></td>
<td style="background-color: #404343"></td>
</tr>
</tbody>
</table>
答案 0 :(得分:0)
要点击link
,文字为 Advanced
,您可以使用以下任意一行代码:
css_selector
:
browser.find_element_by_css_selector("table#topnav_container2 tr td.topnavoff#topnav1 > a").click()
xpath
:
browser.find_element_by_xpath("//table[@id='topnav_container2']//tr//td[@class='topnavoff' and @id='topnav1']/[contains(.,'Advanced')]").click()
注意:文本为
link
的Advanced
位于<a>
标记内。因此,您必须尝试调用强大的 click()方法,而不是send_keys(Keys.RETURN)
或send_keys(Keys.ENTER)
,如下所示:< / p>
browser.find_element_by_link_text("Advanced").click()