2016-12-13 93 views
0
from selenium import webdriver 
import os 
from selenium.webdriver import chrome 

driver = webdriver.Chrome() 
driver.get("http://nmcunited.me.showenter.com/%D7%9C%D7%94-%D7%9C%D7%94-%D7%9C%D7%A0%D7%93.html") 
driver.implicitly_wait(15) 
christmasTag = driver.find_element_by_id('f_2561406_1') 
christsmasTag.click() 
driver.close() 

我使用上面的代碼來練習一些基本的硒操作。 我找不到任何元素,不是按名稱而是按id。不管我嘗試了什麼,我總是得到同樣的錯誤,其中指出,尋找doesent的元素存在。 (當時的想法是按一個按鈕,如果它的事項......)硒無法找到名稱或編號的元素

這是網站的HTML代碼的一部分:

<!-- main page --> 
<td 
valign="top"> 
<table width="100%" cellspacing="0" cellpadding="0" border="0"> 
<!-- Page Content --> 
<!-- Page Content --> 
<tr> 
<td valign="top"> 
<table border="0" width="100%" cellpadding="3" cellspacing="0"> 
<tr> 
<!-- the form --> 
<td valign="top"> 
<form id="form2" name="form2" method="post" action="/site/form/sendForm.asp" OnSubmit="return CheckSubmit();" enctype="multipart/form-data"> 
<!-- Form Field List --> 
<table id='sop_form_594602' class='sop_all_form' align="center" border="0" width="100%" cellpadding="3" cellspacing="0" 
> 
<tr> 
<td style="color:;" class="changeText14"> 
<span style="font-weight:bold;">באיזה חג מפוטר ראין גוסלינג?</span><br> 
<input type="radio" name="f_2561406" id="f_2561406_0" value="1. חג הפסחא" class="rachbox" checked> 
<label for="f_2561406_0">1. חג הפסחא</label> 
<br> 
<input type="radio" name="f_2561406" id="f_2561406_1" value="2. חג המולד" class="rachbox"> 
<label for="f_2561406_1">2. חג המולד</label> 
<br> 
<input type="radio" name="f_2561406" id="f_2561406_2" value="3. סליבסטר" class="rachbox"> 
<label for="f_2561406_2">3. סליבסטר</label> 
<br> 
<input type="radio" name="f_2561406" id="f_2561406_3" value="4. חג ראש השנה" class="rachbox"> 
<label for="f_2561406_3">4. חג ראש השנה</label> 
<br> 
</td> 
</tr> 

this is the said website

任何幫助將是appriciated

順便說一下,這是第一個使用硒試圖運行的程序,ia有任何可能性,我需要改變一些設置或我需要安裝另一個文件?

回答

3

您嘗試查找的項目位於iframe內部。您需要先將webdriver的上下文切換到框架。

from selenium import webdriver 
import os 
from selenium.webdriver import chrome 

driver = webdriver.Chrome() 
driver.get("http://nmcunited.me.showenter.com/%D7%9C%D7%94-%D7%9C%D7%94-%D7%9C%D7%A0%D7%93.html") 
driver.implicitly_wait(15) 
frame = driver.find_element_by_css_selector('div.tool_forms iframe') 
driver.switch_to.frame(frame) 
christmasTag = driver.find_element_by_id('f_2561406_1') 
christmasTag.click() 
driver.close() 
+0

我試過了,它確實沒有工作。 我得到了同樣的錯誤:「selenium.common.exceptions.NoSuchElementException:消息:沒有這樣的元素:無法找到元素:{」method「:」id「,」selector「:」f_2561406_1「} (會話信息:chrome = 54.0.2840.99)「 順便說一句,當你說元素在iframe中時,你是什麼意思? –

+0

我相信你在找'frame = driver.find_element_by_css_selector('[id * ='IFwinEdit_forms_dr4r3_forms「]')@ @GalBar-nahum – Guy

+0

@Guy我也試過了。 它有相同的結果,仍然是相同的錯誤... :( –

0

驗證「ID」是否得到改變,併產生動態刷新頁面,如果是的話,那麼使用下面的XPath來查找元素:

「//輸入[@value ='2。חגהמאורד']「

+0

它也有工作, 順便說一句,當我運行代碼(當然有一些變化)谷歌的主頁,它確實找到了元素。 –