我的页面结构类似于:
<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无法找到表单元素。
谢谢。
答案 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
来向下导航框架层次结构,直到你的焦点在包含你正在寻找的元素的文档的框架上。