2016-12-13 54 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

它也有工作, 顺便说一句,当我运行代码(当然有一些变化)谷歌的主页,它确实找到了元素。 –