c# - Selenium webdriver C#:无法识别 HTML 表单标签内的按钮元素
问题描述
我需要单击带有 id(export_but) 的按钮
可以在图像中看到表单标签的 HTML 代码,当我单击一个按钮时会弹出表单。,尝试通过 XPath、CssSelector、Id 等所有可用选项查找元素。
而且弹出窗口不是警报,所以我尝试了
driver.SwitchTo().Alert()
它不起作用。
在识别此元素时需要帮助。
解决方案
根据您提供的 HTML 和您单击按钮时弹出表单的问题,要识别所需的元素,您必须诱导WebDriverWait<input>
元素可点击,您可以使用以下任一定位器策略:
选择器:
new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(ExpectedConditions.ElementToBeClickable(By.CssSelector("input.submit#export_but[value='Export']")));
路径:
new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(ExpectedConditions.ElementToBeClickable(By.XPath("//input[@class='submit' and @id='export_but' and @value='Export']")));
更新
根据您的评论更新,您仍然无法找到该元素,您也可以调用ExpectedConditions
方法ElementIsVisible(),如下所示:
选择器:
IWebElement element = new WebDriverWait(driver, TimeSpan.FromSeconds(3)).Until(ExpectedConditions.ElementIsVisible(By.CssSelector("input.submit#export_but[value='Export']"))); element.Submit();
路径:
IWebElement element = new WebDriverWait(driver, TimeSpan.FromSeconds(3)).Until(ExpectedConditions.ElementIsVisible(By.XPath("//input[@class='submit' and @id='export_but' and @value='Export']"))); element.Submit()
推荐阅读
- arrays - 如何查询(课程)日期列表并为每个日期返回两行 - 在每个课程日期创建两个会话
- mysql - Mysql:将数据从一个表复制到另一个表并更新源表中的外键
- python - 我可以在不运行python文件的情况下检查python文件所需的python解释器的版本吗?
- http - 有没有办法强制HTTP?
- javascript - JS 在一个函数中返回多个 Promise
- javascript - Typescript fetch() 的标头类型?
- javascript - 如何扩展 node_module 文件,该文件 module.exports 仅导出几个变量,但在整个模块中使用?(带示例)
- iis - IIS 10 当我尝试重命名网站时,我得到该网站已经存在
- git - .git 文件夹会使用命令 git init 显示
- android - Android Material Stepper 在导航回视图后显示空视图