You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Selenium获取Burger的XPATH及操作相邻下拉框与提交按钮

问题解答

我已通过以下代码在HTML表格中定位到文本为'Burger'的元素:

findRow = driver.find_element(By.XPATH, "//*[contains(text(),'Burger')]").value_of_css_property('#name')

现存在两个技术问题:

  1. 如何获取包含'Burger'元素的XPATH?
  2. 如何选中其相邻列下拉框中的'Fish'选项,再点击提交按钮?

对应的HTML代码如下:

<tbody>
    <tr>
        <td>..</td>
        <td>.....</td>
    </tr>
    <tr>
        <td>Burger</td>
        <td>
            <select class="form-control input-sm" id="sel222" name="sel222" type="68" group="433" onchange="count(this)">
                <option value="1">Vegetables</option>
                <option value="2">Fish</option>
                <option value="3">Beef</option>
            </select>
        </td>
    </tr>       
</tbody>
</table>
<button type="button" class="btn btn-primary" id="submit"><span class="fa fa-save"></span> Save</button>

问题1:获取包含'Burger'元素的XPATH

如果需要相对XPATH,直接用精准定位表达式即可:

//td[text()='Burger']

这个表达式能直接定位到文本恰好为'Burger'的<td>标签。

如果需要获取绝对XPATH,可以通过JavaScript脚本获取:

burger_td = driver.find_element(By.XPATH, "//td[text()='Burger']")
absolute_xpath = driver.execute_script("""
function getXPath(elem) {
    if (!elem) return '';
    var path = '';
    for (; elem && elem.nodeType == 1; elem = elem.parentNode) {
        var count = 0;
        var sibling = elem.previousSibling;
        while (sibling) {
            if (sibling.nodeType == 1 && sibling.tagName == elem.tagName) count++;
            sibling = sibling.previousSibling;
        }
        var tagName = elem.tagName.toLowerCase();
        path = '/' + tagName + (count > 0 ? '[' + (count + 1) + ']' : '') + path;
    }
    return path;
}
return getXPath(arguments[0]);
""", burger_td)
print(absolute_xpath)

问题2:选中相邻列下拉框的'Fish'选项并点击提交按钮

可以通过以下步骤实现:

  1. 定位到'Burger'所在的行
  2. 找到该行内的下拉框
  3. 使用Select类选中'Fish'选项
  4. 点击提交按钮

完整代码示例:

from selenium.webdriver.support.ui import Select

# 定位Burger所在的tr行
burger_row = driver.find_element(By.XPATH, "//td[text()='Burger']/parent::tr")

# 定位该行内的下拉框
select_box = burger_row.find_element(By.TAG_NAME, "select")

# 选中'Fish'选项
select = Select(select_box)
select.select_by_visible_text("Fish")  # 通过文本选中
# 也可以通过value值选中:select.select_by_value("2")

# 点击提交按钮
driver.find_element(By.ID, "submit").click()

也可以直接用XPATH一步定位到下拉框:

select_box = driver.find_element(By.XPATH, "//td[text()='Burger']/following-sibling::td/select")

内容的提问来源于stack exchange,提问作者jack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 18:20:34