通过 CSS 选择器或 XPath 使用 JavaScript 定位网络元素?
Locate web elements with JavaScript by CSS Selector or XPath?
在创建 Selenium 自动化测试时,有时我们需要使用 JavaScript 检索 Web 元素,而不是使用 Selenium driver.findElement
.
所以,我知道我们可以做类似
的事情
javaScript = "document.getElementsByClassName('myClassName')[0].click();"
driver.execute_script(javaScript)
我看到我们可以用这种方式定位元素 ByClassName
、ByName
、ByTagName
和 BytagNameNS
但在大多数情况下,元素可以用 [=25 唯一定位=] 选择器或 XPath 仅当我在 documentations and tutorials.
中看不到这种方式时
所以,我想知道是否可以通过 XPath 或 CSS 选择器使用 JavaScript 定位 Web 元素?
document.querySelector() //for single node with css like path or selector
document.querySelectorAll() //for multiple nodes
至 select ID:
document.querySelector('#ID') //returns single element
document.querySelectorAll('#ID') //returns node list, you may need to use forEach
至 select 通过 class:
document.querySelector('.class') //returns single element
document.querySelectorAll('.class') //returns node list, you may need to use forEach
到 select inside div by class:
document.querySelector('div > .class') //returns single element
document.querySelectorAll('div > .class') //returns node list, you may need to use forEach
在创建 Selenium 自动化测试时,有时我们需要使用 JavaScript 检索 Web 元素,而不是使用 Selenium driver.findElement
.
所以,我知道我们可以做类似
javaScript = "document.getElementsByClassName('myClassName')[0].click();"
driver.execute_script(javaScript)
我看到我们可以用这种方式定位元素 ByClassName
、ByName
、ByTagName
和 BytagNameNS
但在大多数情况下,元素可以用 [=25 唯一定位=] 选择器或 XPath 仅当我在 documentations and tutorials.
中看不到这种方式时
所以,我想知道是否可以通过 XPath 或 CSS 选择器使用 JavaScript 定位 Web 元素?
document.querySelector() //for single node with css like path or selector
document.querySelectorAll() //for multiple nodes
至 select ID:
document.querySelector('#ID') //returns single element
document.querySelectorAll('#ID') //returns node list, you may need to use forEach
至 select 通过 class:
document.querySelector('.class') //returns single element
document.querySelectorAll('.class') //returns node list, you may need to use forEach
到 select inside div by class:
document.querySelector('div > .class') //returns single element
document.querySelectorAll('div > .class') //returns node list, you may need to use forEach