gpt4 book ai didi

c# - 使用动态 id 定位元素时出现问题

转载 作者:行者123 更新时间:2023-12-02 00:02:06 26 4
gpt4 key购买 nike

我对 selenium 有点陌生,我一直在解决一个问题:我有一个输入位于这个 html block 内,我的任务是找到它并发送 key 。问题是不仅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: invalid selector: An invalid or illegal selector was specified

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

最佳答案

所需的元素是动态元素,因此要调用 SendKeys() 您必须引入 WebDriverWaitExpectedConditionsElementToBeClickable Method (By)您可以使用以下任一解决方案:

  • 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");

关于c# - 使用动态 id 定位元素时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58837917/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com