【问题标题】:selenium elements between pseudo not finding伪未找到之间的硒元素
【发布时间】:2024-04-14 23:45:01
【问题描述】:

一个页面有以下 HTML

<div class="call-to-action call-to-action--final">

  <input type="submit" name="complete" value="Complete order" class="btn btn--primary" data-submit-payment="true">
</div>

CSS

.call-to-action:after, .call-to-action:before
{
content: "";
    display: table;
}

现在我想从 selenium 中找到这个输入但找不到这个,代码是

 [FindsBy(How = How.XPath, Using = "//div[contains(@class,'call-to-action--final')]//input")]
        public IWebElement CompleteBtn { get; set; }

也试过了

 [FindsBy(How = How.XPath, Using = "//div[contains(@class,'call-to-action--final')]/input")]
        public IWebElement CompleteBtn { get; set; }


 [FindsBy(How = How.XPath, Using = "//div[contains(@class,'call-to-action--final')]/input[(@value='Complete order')]")]
        public IWebElement CompleteBtn { get; set; }

没有任何效果,我认为它的伪元素造成了问题,但无法摆脱它

非常感谢任何帮助。

谢谢

【问题讨论】:

    标签: c# selenium selenium-webdriver webdriver automated-tests


    【解决方案1】:

    你试过了吗

    [FindsBy(How = How.CssSelector, Using = "input[name='complete']")]
    

    [FindsBy(How = How.CssSelector, Using = "input[value='Complete order']")]
    

    【讨论】:

    • 这是元素的复制问题,我使用更复杂的选择器解决了它
    • 如果这回答了您的问题,请接受它作为答案。如果您找到了不同的答案,请将其作为答案发布并为将来的人接受。谢谢!
    • 这并不能肯定地回答我的问题,我的问题在于目标 html 设计。这需要一些调整来检查元素,我不相信这可能是可复制的。