繁体   English   中英

Selenium 浏览器 c# 点击

[英]Selenium browser c# click

试图在表单的下拉列表中选择值。

当前的 HTML 看起来像

<div class="listing-editor__input--half d--ib va--t">
   <div aria-haspopup="true" tabindex="-1" class="dropdown form__text--select d--b dropdown--expanded" aria-expanded="true">
      <div class="dropdown__selector dropdown__selector--select-tag dropdown__selector--select-tag--large">
         <p data-et-name="category" class="tc--lg">
            Select Subcategory (optional)
         </p>
      </div>
      <div>
         <ul class="dropdown__menu">
            <li class="dropdown__menu__item"><a class="dropdown__link">Belts</a></li>
            <li class="dropdown__menu__item"><a class="dropdown__link">Glasses</a></li>
            <li class="dropdown__menu__item"><a class="dropdown__link">Gloves &amp; Mittens</a></li>
            <li class="dropdown__menu__item"><a class="dropdown__link">Hair Accessories</a></li>
            <li class="dropdown__menu__item"><a class="dropdown__link">Hats</a></li>
            <li class="dropdown__menu__item"><a class="dropdown__link">Hosiery &amp; Socks</a></li>
            <li class="dropdown__menu__item"><a class="dropdown__link">Key &amp; Card Holders</a></li>
            <li class="dropdown__menu__item"><a class="dropdown__link">Laptop Cases</a></li>
            <li class="dropdown__menu__item"><a class="dropdown__link">Phone Cases</a></li>
            <li class="dropdown__menu__item"><a class="dropdown__link">Scarves &amp; Wraps</a></li>
            <li class="dropdown__menu__item"><a class="dropdown__link">Sunglasses</a></li>
            <li class="dropdown__menu__item"><a class="dropdown__link">Tablet Cases</a></li>
            <li class="dropdown__menu__item"><a class="dropdown__link">Umbrellas</a></li>
            <li class="dropdown__menu__item"><a class="dropdown__link">Watches</a></li>
            <li class="dropdown__menu__item"><a class="dropdown__link">None</a></li>
         </ul>
      </div>
   </div>
   <p class="form__error-message" style="display: none;">
   </p>
</div>

我试图通过字符串“电话”来选择

试过

    // select the drop down list
    var education = driver.FindElementByCssSelector("#content > div > div > div:nth-child(2) > section:nth-child(4) > div > div.col-x24.col-l20 > div:nth-child(1) > div > div.dropdown__selector.dropdown__selector--select-tag.dropdown__selector--select-tag--large");

    //create select element object 
    var selectElement = new SelectElement(education);

    // select by text
    selectElement.SelectByText("Phone");

输出

OpenQA.Selenium.Support.UI.UnexpectedTagNameException: '元素应该被选择但被 div'

选择器选择

编辑>

在此处输入图片说明

SelectElement只能与 HTML选择标签一起使用 在您提供的 HTML 中选择下拉列表的步骤:

  1. 单击下拉菜单将其展开
  2. 找到并单击“选项”元素。

    using (IWebDriver driver = new ChromeDriver())
    {
        WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
        IJavaScriptExecutor js = (IJavaScriptExecutor) driver;

        driver.Navigate().GoToUrl("https://poshmark.com/create-listing");

        driver.FindElement(By.Id("login_form_username_email")).SendKeys("username");
        driver.FindElement(By.Id("login_form_password")).SendKeys("password");
        driver.FindElement(By.TagName("button")).Click();

        wait.Until(ExpectedConditions.ElementToBeClickable(By.CssSelector("input[data-vv-name='title']"))).SendKeys("Title controled by t3cho");

        driver.FindElement(By.CssSelector("[data-vv-name='originalPrice']")).SendKeys("22");

        var categoryCombobox = driver.FindElement(By.XPath("//span[@data-et-name='category']/ancestor::div[contains(@class,'isting-editor__input--half')][1]"));
        js.ExecuteScript("arguments[0].scrollIntoView(false)", categoryCombobox);
        categoryCombobox.Click();

        var category1 = driver.FindElement(By.LinkText("Accessories"));
        js.ExecuteScript("arguments[0].scrollIntoView(false)", category1);
        category1.Click();

        var category2 = driver.FindElement(By.LinkText("Glasses"));
        js.ExecuteScript("arguments[0].scrollIntoView(false)", category2);
        category2.Click();
    }

下载用于ExpectedConditions SeleniumExtras.WaitHelpers NuGet 包。

尝试这个:

new SelectElement(driver.FindElement(By.Xpath("//ul[@class='dropdown__menu']"))).SelectByText("Phone Cases");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM