Selenium点击动态链接

时间:2013-11-14 12:31:57

标签: python selenium automation webdriver

我的页面结构类似于:

<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无法找到表单元素。

谢谢。

2 个答案:

答案 0 :(得分:2)

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

然后迭代每个标签并检查其文本,因为文本总是相同的

a_tags = driver.find_elements_by_tag_name('a')
for a in a_tags:
    if a.text == 'TEXT':
        a.click()

答案 1 :(得分:2)

您需要先切换到包含<a>元素的帧。您的代码看起来像这样:

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

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