我正在尝试使用 selenium 编写一个 python 程序,不幸的是我遇到了一个奇怪的问题。我有用 JSP 编写的网页,我无法使用.find_element_by_*
命令访问元素,除了.find_elements_by_id
. 找不到任何标签。
tag_name
如果我使用其 ID 访问某些元素,那么我可以通过其他查找命令(例如、name
等)访问其子项。例如,如果我有这个 HTML:
<div id="myId">
<div name="myName">Test Div</div>
</div>
我可以访问内部div
,.find_element_by_id("myId").find_element_by_name("myName")
但我无法使用它访问它.find_element_by_name("myName")
,如果我使用.find_elements_by_tag_name("div")
整个 HTML,我得到一个空列表。
实际上我的网页与 IE 7 兼容,我尝试在 中设置参数版本desired_capabilities
,但没有帮助,并且 web 驱动程序默认加载 IE 10。
编辑1:
这是我使用的python脚本:
from selenium import webdriver
def my_method(web_driver = "Firefox"):
# launch web-driver
if web_driver.upper() == "IE":
driver = webdriver.Ie()
print "IE"
else:
driver = webdriver.Firefox()
print "FireFox"
# navigating
driver.get("http://python.org")
# accessing elements
## .find_by_tag_name
e = driver.find_elements_by_tag_name("html")
print "number of html tags: " + str(len(e))
e = e[0].find_elements_by_tag_name("a")
print "number of A tags using html tag: " + str(len(e))
e = driver.find_elements_by_tag_name("a")
print "number of A tags: " + str(len(e))
e = driver.find_elements_by_tag_name("body")
print "number of body tags: " + str(len(e))
e = driver.find_elements_by_tag_name("html")
e = e[0].find_elements_by_tag_name("body")
print "number of body tags using html tag: " + str(len(e))
## .find_by_xpath
e = driver.find_elements_by_xpath("//a")
print "number of A xpath: " + str(len(e))
e = driver.find_elements_by_xpath("/html/body")
print "number of body xpath: " + str(len(e))
## .find_by_class_name
e = driver.find_elements_by_class_name("reference")
print "number of A using class name: " + str(len(e))
## .find_by_css_selector
e = driver.find_elements_by_css_selector("a[class='reference']")
print "number of A using css selector: " + str(len(e))
driver.close()
# execute
my_method(web_driver = "Firefox")
my_method(web_driver = "Ie")
编辑2:
在 HTML 中,我们必须将部分分开:菜单和主页。每一个都有一个 HTML 标签,并单独呈现。两部分的结果 HTML 代码都很简单,类似于:
<html lang="en_us">
<body>
<div id="testdiv">
<table align="center" border="0">
<tr bgcolor="#666666">
<td><img src="img.jpg"/></td>
<td><div id="message" style="color:white;font-size:12px;font- weight:bold;">message</div></td>
</tr>
</table>
</div>
</body>
</html>
编辑 3:
如果有人熟悉 JSP,我想知道如何将 JSP 标签转换为 HTML 标签,因为它可以帮助我检测访问标签的问题。