C# 使用动态ID定位元素时出现问题

C# 使用动态ID定位元素时出现问题,c#,selenium,xpath,css-selectors,webdriverwait,C#,Selenium,Xpath,Css Selectors,Webdriverwait,我对selenium有点陌生,我一直在想一个问题:我在这个html块中有一个输入,我的任务是找到它并发送密钥。问题在于不仅id是动态的,而且css选择器和Xpath也是动态的 看起来都是这样 Xpath //*[@id="qf_25239c53-8f51-a9af-adff-fb4c61c369dd"] CSSselector # qf_6fc767f5-f6d9-ce40-dc78-df0e43f6dc75 但它只修复了一个异常和另一个异常,现在我被困在: InvalidSelectorEx

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

看起来都是这样

Xpath //*[@id="qf_25239c53-8f51-a9af-adff-fb4c61c369dd"]
CSSselector # qf_6fc767f5-f6d9-ce40-dc78-df0e43f6dc75
但它只修复了一个异常和另一个异常,现在我被困在:

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


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

请尝试以下css选择器:


input.q-field\uu native.q-placeholder

所需元素是动态元素,因此要调用
SendKeys()
,必须使用as进行归纳,并且可以使用以下任一解决方案:

  • css选择器

    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");
    
new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementToBeClickable(By.CssSelector("input.q-field__native.q-placeholder[id^='qf_'][placeholder='Заголовок']"))).SendKeys("Vladimir Krygin");
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");