c# - XPath 查询适用于 JS 但不适用于 selenium
问题描述
我有这个(见下文)XPath 查询,它在 Javascript 上工作得很好,但它挂起,当然因为它还没有找到元素,所以它正在等待超时。我怎样才能解决这个问题?
var span = driver.FindElement(By.XPath("//span[text() = \"What's your name?\"]/ancestor::div[@class=\"office-form-question-content office-form-theme-focus-border\"]//input[@class=\"office-form-question-textbox office-form-textfield-input form-control border-no-radius\"]"));
驱动程序的this
类型。HTML 的目标部分如下所示:
<div class="office-form-question-content office-form-theme-focus-border">
<div aria-live="assertive" role="alert"></div>
<div class="question-title-box">
<div>
<div aria-level="2" class="office-form-question-title" id="question1-title" role="heading"><span class="ordinal-number">1.</span><span>What's your name?</span><span class="required-star"></span>
<div><span class="accessibility-reader-no-display" id="question1-required">Requer resposta</span></div>
<div><span class="accessibility-reader-no-display" id="question1-questiontype">Texto de linha única</span></div>
</div>
</div>
</div>
<div class="office-form-question-element">
<div class="student-feedback-view-short-text-field-with-correctness">
<div>
<div class="office-form-textfield"><input class="office-form-question-textbox office-form-textfield-input form-control border-no-radius" aria-labelledby="question1-title question1-required question1-questiontype" placeholder="Insira sua resposta" spellcheck="true" maxlength="4000"
value=""></div>
</div>
</div>
</div>
</div>
解决方案
我使用您的 xpath 表达式和 HTML 片段成功运行了它。
driver.get("file:///C:/demo.html");
String xpath = "//span[text() = \"What's your name?\"]/ancestor::div[@class=\"office-form-question-content office-form-theme-focus-border\"]//input[@class=\"office-form-question-textbox office-form-textfield-input form-control border-no-radius\"]";
WebElement e = driver.findElement(By.xpath(xpath));
e.sendKeys("quan");
我的环境:
Chrome 84.0.4147.125
ChromeDriver 84.0.4147.30
因此,“XPath 查询不起作用硒”可能不是真正的原因。
推荐阅读
- c# - Entity Framework Core - ForeingKey 显示空值
- r - 创建一个新变量,它是一个变量以其他两个变量为条件的平均值(并维护数据集中的所有其他变量)
- xml - 如何根据条件跳过 XML 中的节点并将该值添加到具有匹配条件的节点中
- shell - 如何避免在ggsci中删除重复时出现提示
- javascript - 如何在 jQuery click 上预加载下一个背景 css 图像?
- javascript - 在 webgl 中画圆看起来像椭圆
- assembly - 在 x86 程序集中,什么时候应该使用全局变量而不是局部变量?
- docker - 没有 debian 映像可以更新/安装软件包
- r - 'x' 必须是至少二维的数组
- apk - apk中的外部链接问题