C# Selenium XPATH 基于 Span 中文本的动态按钮选择

标签 c# selenium selenium-webdriver xpath webdriver

我正在尝试选择一个根据跨度中人员的姓名动态创建的按钮,但我无法正确获取 XPATH 语法。页面上会动态创建几个这样的按钮,因此我需要使用的标识符是客户名称。这是按钮的 HTML。

<button id="172369678903-announce" name="172369678903" data-selected-address-id="172369678903" data-unit-ids="[&quot;miq://document:1.0/Contract/a:1.0/Unit:1.0/dc290763-6cce-46c5-a878-3b5b0e615740#35176ee2-51c5-479b-b63e-a2cc958a2de9&quot;]" data-url="/spr/returns/addressSelection/dc290763-6cce-46c5-a878-3b5b0e615740" class="a-button-text selected-address" type="button">
    <div class="a-column a-span12">
        <div class="a-row">
        <div class="a-section a-spacing-none a-text-left">
            <span class="a-text-bold">
        John Doe
            </span>
        </div>
        </div>
        <div class="a-row">
        <div class="a-section a-spacing-none a-text-left">
            <span>
        20410 SOME STREET, WALNUT, CA, 91789-2435
            </span>
        </div>
        </div>
        <div class="a-row">
        <div class="a-section a-spacing-none a-text-left">
            <span>
Phone number: 2813308004
            </span>
        </div>
        </div>
    </div>
</button>

我有 John Doe 的信息,这就是我需要能够单击此项目的方式。这是我目前拥有的 XPATH 语法,但已经尝试了许多不同形式。变量shipName 中包含名字John Doe。

var addyFinder = driver.FindElement(By.XPath("//button/span[contains(text(),'" + shipName.Trim() + "')]"));

最佳答案

尝试下面的 XPath 选择所需的 button 节点:

"//button[normalize-space(.//span)='" + shipName.Trim() + "']"

关于C# Selenium XPATH 基于 Span 中文本的动态按钮选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52937754/

相关文章:

c# - 在运行时更改 log4net 文件名而不更改附加程序

css - 使用 xpath 或 css : How to get something which is selected on page

java - Selenide:Allure 报告中缺少 @Step 注释

java - 语法错误,在Eclipse中导入TestNG的@Test注释时插入 "EnumBody"以完成ClassBodyDeclarations错误

javascript - 如果由 javascript 提供服务,如何使用 WebClient 下载文件

c# - 如何使用 linq 从嵌套字典中选择所有值?

c# - 如何在 mvc 4 razor 的数据库中保存嵌套的可排序菜单?

python - Selenium:查找存储在容器中的元素

c# - 尝试解析标记助手指令 '@addTagHelper' 时遇到意外错误

javascript - 在 Vue.js 中进行端到端 (e2e) 测试的正确方法是什么