相关疑难解决方法(0)

检查元素在DOM中是否可见

有什么方法可以检查一个元素是否在纯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)

还有其他我可能会失踪的人?

javascript dom

334
推荐指数
15
解决办法
39万
查看次数

使用Java中的Selenium快速获取每个WebElement的class属性

我希望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都是获取信息而不是在本地存储信息.

有没有更快或可并行化的方法来做到这一点?

java selenium selenium-webdriver

5
推荐指数
1
解决办法
3856
查看次数

Python + Selenium有效地获取列表中元素的属性

使用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)

python selenium phantomjs selenium-webdriver

2
推荐指数
1
解决办法
3477
查看次数