【问题标题】:Not able to locate input element using Selenium WebDriver无法使用 Selenium WebDriver 定位输入元素
【发布时间】:2015-03-15 20:05:31
【问题描述】:

我是 Selenium 的新手。在特定情况下,我无法捕获输入元素。下面是代码:

<ul class = "form1">
    <li class="firstName">
        <input placeholdervalue="First name" tabindex="1" placeholder="First name" class="text" placeholdevalue="First name" data-input-rule="name" data-value-rule="required" maxlength="20" type="text">
    </li>
</ul>

我想定位输入元素。我尝试使用定位器By.ClassNameBy.CssSelector("input[class='text placeholder']") 定位它,也尝试过:

wait.Until(ExpectedConditions.ElementIsVisible(By.CssSelector("input[className='text' and placeholdevalue='First name'"))).SendKeys("Vipul");

但是输入元素没有被选中。 请告诉我选择输入元素的正确方法。

【问题讨论】:

    标签: c# selenium selenium-webdriver webdriver


    【解决方案1】:

    我会使用 dot 表示法 来匹配 ulliinput 元素的类:

    By.CssSelector("ul.form1 li.firstName input.text")
    

    如果仍然无法找到该元素,则可能有两个最常见的原因:

    • 它位于 iframe 中,您需要切换到它
    • 您需要等待元素出现

    我将展开这些项目,以防您仍然无法找到该元素。

    【讨论】:

    • 想指出,@Amit,这个符号在 CSS 中使用 By.CssSelector . 等同于 [class~='...']
    【解决方案2】:

    感谢您的回复。

    它适用于这个,

    driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(20));
    wait.Until(ExpectedConditions.ElementIsVisible(By.CssSelector("ul.form1 li.firstName input.text"))).SendKeys("Vipul"); 
    

    这是使用等待的正确方法吗?

    另外,谁能指出解释使用 selenium webdriver 处理框架的资源?

    -阿米特

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-15
      • 1970-01-01
      • 2016-12-10
      • 2018-09-30
      • 2020-01-09
      • 2020-05-30
      • 1970-01-01
      • 2021-04-12
      相关资源
      最近更新 更多