【问题标题】:Issue locating elements with dynamic ids使用动态 ID 定位元素的问题
【发布时间】:2020-03-09 07:09:45
【问题描述】:

我对 selenium 有点陌生,我一直在解决一个问题:我在这个 html 块内有一个输入,我的任务是找到它并发送密钥。问题是不仅id是动态的,css选择器和Xpath也是动态的

一切都是这样的

Xpath //*[@id="qf_25239c53-8f51-a9af-adff-fb4c61c369dd"]
CSSselector # qf_6fc767f5-f6d9-ce40-dc78-df0e43f6dc75
<label data-v-1a920554="" for="qf_b75b7021-5df4-2283-1c79-23bddcde3a3d" class="q-field row no-wrap items-start indent q-input q-field--outlined q-field--dense">
<div class="q-field__inner relative-position col self-stretch column justify-center">
<div tabindex="-1" class="q-field__control relative-position row no-wrap">
<div class="q-field__control-container col relative-position row no-wrap q-anchor--skip">
<input tabindex="0" placeholder="Заголовок" id="qf_b75b7021-5df4-2283-1c79-23bddcde3a3d" type="text" class="q-field__native q-placeholder"></div></div></div></label>

我这样做没有解决这样的元素异常

IWebElement MarkerNameInput = Setup.Driver.FindElement(By.XPath("(//*[@class = 'q-field__native q-placeholder'])[1]"));

但它只修复了一个异常,现在我被困在:

InvalidSelectorException:无效选择器:指定了无效或非法的选择器

所以问题是定位输入的正确方法是什么,所以我可以在其中发送键?

【问题讨论】:

    标签: c# selenium xpath css-selectors webdriverwait


    【解决方案1】:

    所需元素是动态元素,因此要调用SendKeys(),您必须将WebDriverWaitExpectedConditions 诱导为ElementToBeClickable Method (By),您可以使用以下任一解决方案:

    • CssSelector:

      new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementToBeClickable(By.CssSelector("input.q-field__native.q-placeholder[id^='qf_'][placeholder='Заголовок']"))).SendKeys("Vladimir Krygin");
      
    • XPath:

      new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementToBeClickable(By.XPath("//input[@class='q-field__native q-placeholder' and starts-with(@id, 'qf_')][@placeholder='Заголовок']"))).SendKeys("Vladimir Krygin");
      

    【讨论】:

      【解决方案2】:

      请尝试以下 CSS 选择器:

      input.q-field__native.q-placeholder

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-12-30
        • 2022-12-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-31
        相关资源
        最近更新 更多