【问题标题】:Using Selenium IDE to find dynamic ID使用 Selenium IDE 查找动态 ID
【发布时间】:2014-09-16 03:28:15
【问题描述】:

我已经能够通过使用以下命令、目标和值来定位元素。

Command:  Select
Target:   //div[@id='ui-id-51']/div[2]/div/fieldset/div/div/select
Value:    Documentation 

这个 xpath 可以工作,但是,id 号是动态的,每次我打开这个窗口时都会改变。所以下次我打开这个窗口时,数字(本例中为 51)可能是 201,但 ui-id- 将始终相同。所以下次打开窗口就找不到这个Target了。我曾尝试使用以下 xpath 来解决此问题,但它不起作用。

Command:   Select
Target:    //div[starts-with(@id,'ui-id-')]/div[2]/div/fieldset/div/div/select
Value:     Documentation

谁能给我正确的 xpath 来找到这个具有动态 id 的目标?

这里是 HTML:

<div id="ui-id-22" class="ui-dialog-content ui-widget-content" style="display: block; width: auto; min-height: 0px; max-height: none; height: 552px;">

    <div></div>
    <div class="patient-module-contact-edit">
        <!--

         start of template: "#contact_log_logEntry_edit" 

        -->
        <div class="new-encounter">
            <fieldset class="wide-mode liquid" style="border: none; padding-top: 0px;">
                <div class="row span5">
                    <div class="span5">
                        <label></label>
                        <select class="encounterType vf vf-required span4 vf-validated" name="encounterType" style="visibility: visible; background-color: rgb(238, 238, 238);">
                            <option value=""></option>
                            <option value="INBOUND_TELEPHONE"></option>
                            <option value="OUTBOUND_TELEPHONE"></option>
                            <option value="OUTBOUND_TELEPHONE_VM"></option>
                            <option value="OUTBOUND_TELEPHONE_NO"></option>
                            <option value="INBOUND_EMAIL"></option>
                            <option value="OUTBOUND_EMAIL"></option>
                            <option value="INBOUND_FAX"></option>
                            <option value="OUTBOUND_FAX"></option>
                            <option value="INBOUND_TEXT"></option>
                            <option value="OUTBOUND_TEXT"></option>
                            <option selected="" value="ENCOUNTER"></option>
                            <option value="DOCUMENTATION"></option>

【问题讨论】:

    标签: selenium xpath selenium-ide


    【解决方案1】:

    基于starts-with() 的解决方案看起来不错,应该可以根据您提供的内容工作。

    您也可以使用contains() 尝试更广泛的检查:

    //div[contains(@id,'ui-id-')]/div[2]/div/fieldset/div/div/select 
    

    【讨论】:

    • 这两种方法我都试过了。我的测试没有失败,但它没有将我的目标值更改为文档,并且在运行测试时它甚至没有突出显示该元素。只有当我的 xpath 中有特定的 ID 号时,它才会突出显示和更改目标文档。这是问题所在,因为当 id 更改时这将不起作用。我可以尝试和试验其他任何想法吗?
    • @ltp61992 请添加包含目标元素的相关 HTML 代码(编辑问题并将其插入其中)。谢谢。
    • @ltp61992 好的,让我们尝试通过name 获取select//select[@name="encounterType"]。有用吗?
    • 再一次,测试用例通过了,但该元素没有突出显示,也没有更改为文档。
    • @ltp61992 这很奇怪,它是您正在测试的公共 URL 吗?如果是,你能提供它以及导出的测试用例吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-16
    • 2018-05-13
    相关资源
    最近更新 更多