c# - Selenium WebDriver IE性能

原文 标签 c# selenium selenium-webdriver css-selectors

_driver.FindElement(By.CssSelector("[id='3_NewSiteMaintenanceButton']"));


= 15.0秒



_driver.FindElement(By.CssSelector("[id$='NewSiteMaintenanceButton']"));


= 18.4秒



_driver.FindElement(By.CssSelector("#3_NewSiteMaintenanceButton"));



  NoSuchElementException:无法使用CSS选择器==#3_NewSiteMaintenanceButton查找元素




_driver.FindElement(By.Id("3_NewSiteMaintenanceButton"));


= 12.58秒



Chrome和FireFox分别在4秒和6秒内完成了整个测试,而IE则需要12-18秒才能找到一个DOM元素。为什么IE这么慢,如何提高性能?

最佳答案

ID选择器不能以数字开头,因为a CSS identifier cannot begin with a digit。如果您未在属性选择器中引用该值,则它们都会因相同的原因而失败(尽管很奇怪,它会导致NoSuchElementException而不是其他事情,因为从技术上讲选择器无效)。

要使用ID选择器,您需要对首位进行转义。如果数字来自变量,您仍然可以单独对其进行转义,只需将转义放在哈希之后:

_driver.FindElement(By.CssSelector("#\\" + prefex + "_NewSiteMaintenanceButton"));

关于c# - Selenium WebDriver IE性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28198198/

相关文章:

c# - 将 View 模型与存储库模式一起使用

c# - 使用 Html Agility Pack 获取整个表单元素作为字符串

selenium - 是Firefox还是Geckodriver,它创建了 "rust_mozprofile"目录

python - 自动单击 Selenium 时出现问题

c# - nhibernate where子句中的条件“或”

c# - 使用 C# 将格式从一行复制到另一行

java - 有什么办法可以分块运行testng测试而不是完整套件

java - 如何使用GeckoDriver Firefox和Selenium下载文件?

java - 如何在一个子类中的不同方法中调用父类(super class)的几个对象?

python - ChromeDriver可执行文件必须在路径中可用