我正在尝试使用 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 标签,因为它可以帮助我检测访问标签的问题。