为了账号安全,请及时绑定邮箱和手机立即绑定

XPath 选择特定的下拉值

XPath 选择特定的下拉值

C#
神不在的星期二 2021-11-28 16:42:28
我想从下拉列表中选择“VxDev:InterAction 测试自动化列表”。代码如下<select name="intEmailListId" id="intEmailListId" style="min-width: 210px" data-selected-list="8589934864" class="list_selector">                <option value="">** Please select a list **</option>                <option value="">                    --                </option>                <option value="my-contacts">                    My contacts                </option>                <option value="">                    --                </option>                    <option value="8589934952">                        * 001 New List                        &nbsp;&nbsp;</option>                    <option value="8589934880">                        VxDev: Hard Bounce List (QA team only)                        &nbsp;&nbsp;</option>                    <option value="8589934864" selected="">                        VxDev: InterAction Test Automation List                        &nbsp;&nbsp;</option>我在 xpath 下面尝试过,它曾经可以工作,但现在无法正常工作try                    {                        selectedList =                            BrowserFactory.Driver.FindElement(                                By.XPath(".//li[text()[contains(.,'" + listName + "')]]/input"));                    }                    catch (NoSuchElementException)                    {                        selectedList = BrowserFactory.Driver.FindElement(                        //By.XPath(".//option[text()[contains(.,'" + listName + "')]]"));                            By.XPath(".//option[starts-with(normalize-space(text()),'" + listName + "')]"));                    }请帮忙如何选择具体的下拉值?提前致谢。
查看完整描述

2 回答

?
慕哥6287543

TA贡献1831条经验 获得超10个赞

你可以试试这个

String selectedList = BrowserFactory.Driver.FindElement(By.XPath("//option[@value='8589934864']")).GetAttribute("value");

或者

String selectedList = BrowserFactory.Driver.FindElement(By.XPath("//option[@value='8589934864']")).GetAttribute("innerText");



查看完整回答
反对 回复 2021-11-28
?
大话西游666

TA贡献1817条经验 获得超14个赞

在这里,问题在于您的语法。尝试这个:


try{

    selectedList = BrowserFactory.Driver.FindElement(By.XPath("//li[contains(.,'" + listName + "')]/input"));

    By.XPath("//li[contains(.,'" + listName + "')]/input"));

    //By.XPath("//li[contains(text(),'" + listName + "')]/input")); // you can try this as well

   }catch (NoSuchElementException){

          selectedList = BrowserFactory.Driver.FindElement(

          //By.XPath("//option[contains(.,'" + listName + "')]"); // OR

          //By.XPath("//option[contains(text(),'" + listName + "')]");

          By.XPath("//option[starts-with(normalize-space(text())='" + listName + "')]")

        }


查看完整回答
反对 回复 2021-11-28
  • 2 回答
  • 0 关注
  • 473 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信