java之从 Selenium WebDriver之Java 中的 WebElement 获取 CSS 选择器字符串

无情 阅读:27 2023-09-06 19:40:43 评论:0

我有一个 WebElement,我只是想提取 CSS 选择器字符串。这是我调试代码时变量的值:

[[ChromeDriver: chrome on MAC (345345345n5435345b34)] -> css selector: div[class='alert alert-danger']]

我只需要访问 css 选择器:

div[class='alert alert-danger']] 

我可以拆分字符串,但是有人知道 Selenium 提供的更有效的方法吗?我试过使用返回“alert alert-danger”的 .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); 


标签:CSS
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号