有什么方法可以检查一个元素是否在纯JS(没有jQuery)中可见?
因此,例如,在此页面中:Performance Bikes,如果您将鼠标悬停在Deals(在顶部菜单上),则会出现一个交易窗口,但在开始时它没有显示.它在HTML中,但不可见.
因此,给定一个DOM元素,我该如何检查它是否可见?我试过了:
window.getComputedStyle(my_element)['display']);
Run Code Online (Sandbox Code Playgroud)
但它似乎没有起作用.我想知道应该检查哪些属性.它出现在我的脑海里:
display !== 'none'
visibility !== 'hidden'
Run Code Online (Sandbox Code Playgroud)
还有其他我可能会失踪的人?
我希望WebElement用selenium快速获取页面上每个类的class属性.目前,我正在做以下事情:
allElements = new ArrayList<WebElement>(m_webDriver.findElements(By.cssSelector("*")));
for (WebElement element : allElements) {
String className = element.getAttribute("class");
}
Run Code Online (Sandbox Code Playgroud)
这个过程非常缓慢,在包含500个元素的页面上花费超过30秒.我尝试并行化getAttribute调用,这是该方法中最慢的部分,但没有速度增加.这让我相信每次调用getAttribute都是获取信息而不是在本地存储信息.
有没有更快或可并行化的方法来做到这一点?
使用Python,Selenium和PhantomJS获取多个元素的相同属性的最有效方法是什么?我的解决方案使用find_elements_by_css_selector哪个定位我需要的所有元素,这需要不到一秒钟,然后我循环遍历列表以获取我需要的属性.我的循环花费了大约2500个元素的一分钟,考虑到所有元素都是用find_elements_by_css_selector方法映射的,这对我来说似乎很多.是get_attribute方法真的那么贵还是我做错了什么?
from selenium import webdriver
driver = webdriver.PhantomJS(executable_path=r'mypath\phantomjs.exe')
driver.set_window_size(1120, 550)
driver.get("https://www.something.com")
table = []
elements = driver.find_elements_by_css_selector("tr[id*='bet-']") # takes under 1 second
for element in elements:
table.append(element.get_attribute('data-info')) # takes over 60 seconds (2000 elements)
driver.close
Run Code Online (Sandbox Code Playgroud)