我有一个 WebElement,我只是想提取 CSS 选择器字符串。这是我调试代码时变量的值:
[[ChromeDriver:MAC 上的 chrome (345345345n5435345b34)] -> css 选择器:
div[class='警报警报-危险']]
我需要访问 css 选择器:
div[class='alert alert-danger']]
我可以拆分字符串,但是有人知道 Selenium 提供的更有效的方法吗?我尝试过使用.getAttribute("class")
它返回“警报警报危险”,但我需要整个选择器。
感谢您的阅读,任何帮助将不胜感激。
您可以使用一段 Javascript 构建自己独特的 CSS 选择器。下面是一个 Java 示例:
final String JS_BUILD_CSS_SELECTOR =
"for(var e=arguments[0],n=[],i=function(e,n){if(!e||!n)return 0;f" +
"or(var i=0,a=e.length;a>i;i++)if(-1==n.indexOf(e[i]))return 0;re" +
"turn 1};e&&1==e.nodeType&&'HTML'!=e.nodeName;e=e.parentNode){if(" +
"e.id){n.unshift('#'+e.id);break}for(var a=1,r=1,o=e.localName,l=" +
"e.className&&e.className.trim().split(/[\\s,]+/g),t=e.previousSi" +
"bling;t;t=t.previousSibling)10!=t.nodeType&&t.nodeName==e.nodeNa" +
"me&&(i(l,t.className)&&(l=null),r=0,++a);for(var t=e.nextSibling" +
";t;t=t.nextSibling)t.nodeName==e.nodeName&&(i(l,t.className)&&(l" +
"=null),r=0);n.unshift(r?o:o+(l?'.'+l.join('.'):':nth-child('+a+'" +
")'))}return n.join(' > ');";
WebDriver driver = new FirefoxDriver();
JavascriptExecutor js = (JavascriptExecutor)driver;
driver.get("http://stackoverflow.com/questions");
// get an element
WebElement element = driver.findElement(By.cssSelector(".youarehere"));
// build the Css selector for the targeted element
String selector = (String)js.executeScript(JS_BUILD_CSS_SELECTOR, element);
// display the result
System.out.println("Unique Css selector: " + selector);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)