0

我有一个类似于这样的页面结构:

<html>
    <head/>
    <frameset>
        <frame/>
        <frameset id="id1">
            <frame/>
            <frame id="id2">
                <html>
                    <head/>
                    <body class="class1">
                        <form id="id3">
                            <input/>
                            <input/>
                            <input/>
                            <input/>
                            <table/>
                            <table/>
                            <table/>
                            <div id="id4">
                                <div id="id5">
                                    <table id="id6">
                                        <thead/>
                                        <tbody>
                                            <tr/>
                                            <tr/>
                                            <tr/>
                                            <tr>
                                                <td/>
                                                <td/>
                                                <td>
                                                    <a href="dynamic link">Text</a>

我需要点击动态链接 - 表格内的链接和位置各不相同,但文本始终相同。

我试过使用 find_element_by_link_text 并且失败了。

使用 xpath 找不到表单元素。

谢谢你。

4

2 回答 2

2

您可以首先使用以下命令查找页面中的所有标签:find_elements_by_tag_name

然后遍历每个 a 标签并检查其文本,因为文本始终相同

a_tags = driver.find_elements_by_tag_name('a')
for a in a_tags:
    if a.text == 'TEXT':
        a.click()
于 2013-11-14T12:38:31.953 回答
2

您需要先切换到包含该<a>元素的框架。您的代码将如下所示:

driver.switch_to_frame('id3')
driver.find_element_by_link_text('TEXT').click()

请注意,上面的代码只是一个近似值,因为您提供的 HTML 代码只是一个近似值。特别是,您有一个<frameset>元素作为另一个<frameset>元素的直接子元素,我认为这是无效的 HTML。如果您确实有嵌套的框架集,您将需要多次调用来switch_to_frame向下导航框架层次结构,直到您的焦点位于包含您正在查找的元素的文档的框架上。

于 2013-11-14T12:56:14.993 回答