python - Webdriver - 通过标签定位输入 (Python)

标签 python selenium xpath selenium-webdriver webdriver

如何使用 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/

相关文章:

python - 无服务器 - Numpy - 无法找到好的绑定(bind)路径格式

Python:使用另一个文件作为键从文件中提取行

python - 如何从 html 和/或 python3 将数据添加/附加到 js 文件

javascript - 如何使用 selenium 自动化影子 DOM 元素?

php - 使用 Behat/Selenium 在特定的 DIV 中查找内容

python - 使用 RenderCollision 显示 Harfang 3D 物理调试?

angularjs - 在 Protractor e2e 测试期间独立控制多个浏览器

javascript - 如何单击 Selenium Webdriver 中的所有元素?

xml - 如何用xmllint/xpath解析出不同元素的几个属性的值?

Python lxml xpath XPathEvalError : Invalid expression -- why?