如何使用 webdriver 通过标签找到输入字段?
我喜欢测试某个 Web 表单,不幸的是它使用动态生成的 ids,因此它们不适合作为标识符。
然而,与每个网络元素相关的标签让我觉得合适。 不幸的是我无法通过一些建议做到这一点 在网络上提供。 SO 这里有一个线程,但没有 产生一个可接受的答案:
Selenium WebDriver Java - Clicking on element by label not working on certain labels
为了在 Java 中解决这个问题,通常建议通过标签的文本内容将标签定位为 anchor ,然后指定输入元素的 xpath:
//label[contains(text(), 'TEXT_TO_FIND')]
不过我不知道如何在 python 中做到这一点。 我的网络元素:
<div class="InputText">
<label for="INPUT">
<span>
LABEL TEXT
</span>
<span id="idd" class="Required" title="required">
*
</span>
</label>
<span class="Text">
<input id="INPUT" class="Text ColouredFocus" type="text" onchange="var wcall=wicketAjaxPost(';jsessionid= ... ;" maxlength="30" name="z1013400259" value=""></input>
</span>
<div class="RequiredLabel"> … </div>
<span> … </span>
</div>
最佳答案
不幸的是我无法使用 CSS 或 XPATH 表达式 在网站上。 ID 和名字总是在变化。
我发现的解决问题的唯一方法是一个肮脏的方法 - 解析 页面的源代码并通过字符串操作提取 ids。 当然这不是 webdriver 的预期使用方式,但是 它运行稳定。
代码:
lines = []
for line in driver.page_source.splitlines():
lines.append(line)
if 'LABEL TEXT 1' in line:
id_l1 = lines[-2].split('"', 2)[1]
关于python - Webdriver - 通过标签定位输入 (Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26265068/