相关疑难解决方法(0)

Java异常有多慢?

问题:Java中的异常处理实际上是否很慢?

传统观念以及许多谷歌搜索结果表明,不应将特殊逻辑用于Java中的正常程序流程.通常有两个原因,

  1. 它确实很慢 - 甚至比常规代码慢一个数量级(给出的原因各不相同),

  1. 它很混乱,因为人们只希望在特殊代码中处理错误.

这个问题是关于#1.

例如,这个页面将Java异常处理描述为"非常慢",并将缓慢与异常消息字符串的创建联系起来 - "然后将此字符串用于创建抛出的异常对象.这并不快." Java中的有效异常处理这篇文章说"其原因在于异常处理的对象创建方面,从而使异常本身变得缓慢".另一个原因是堆栈跟踪生成减慢了它的速度.

我的测试(使用Java 1.6.0_07,Java HotSpot 10.0,在32位Linux上)表明异常处理并不比常规代码慢.我尝试在循环中运行一个执行一些代码的方法.在方法结束时,我使用布尔值来指示是返回还是抛出.这样实际处理是一样的.我尝试以不同的顺序运行方法并平均我的测试时间,认为它可能是JVM升温.在我的所有测试中,投掷至少与返回一样快,如果不是更快(最多快3.1%).我对我的测试错误的可能性持开放态度,但我没有看到代码示例,测试比较或过去一两年中显示Java中的异常处理的结果慢.

让我沿着这条路走下去的是我需要使用的API,它将异常作为正常控制逻辑的一部分.我想在他们的使用中纠正它们,但现在我可能无法做到.相反,我是否必须赞美他们的前瞻性思维?

即时编译中的高效Java异常处理文章中,作者建议单独存在异常处理程序,即使没有抛出异常,也足以阻止JIT编译器正确优化代码,从而减慢它的速度.我还没有测试过这个理论.

java performance exception-handling

471
推荐指数
10
解决办法
7万
查看次数

Selenium c#Webdriver:等到元素存在

我想确保在webdriver开始执行操作之前存在一个元素.

我正试图让这样的东西起作用:

WebDriverWait wait = new WebDriverWait(driver, new TimeSpan(0,0,5));
wait.Until(By.Id("login"));
Run Code Online (Sandbox Code Playgroud)

我主要是在努力设置如何设置任何功能..

c# selenium automated-tests webdriver selenium-webdriver

173
推荐指数
7
解决办法
33万
查看次数

WebDriver:检查元素是否存在?

如何检查Web驱动程序是否存在元素?

真正使用try catch是唯一可行的方法吗?

boolean present;
try {
   driver.findElement(By.id("logoutLink"));
   present = true;
} catch (NoSuchElementException e) {
   present = false;
}
Run Code Online (Sandbox Code Playgroud)

java testing webdriver selenium-webdriver

121
推荐指数
5
解决办法
31万
查看次数

find_element_by_* 命令在 Selenium 中已弃用

启动功能时

def run(driver_path):
    driver = webdriver.Chrome(executable_path=driver_path)
    driver.get('https://tproger.ru/quiz/real-programmer/')
    button = driver.find_element_by_class_name("quiz_button")
    button.click()
run(driver_path)
Run Code Online (Sandbox Code Playgroud)

我收到这样的错误:

def run(driver_path):
    driver = webdriver.Chrome(executable_path=driver_path)
    driver.get('https://tproger.ru/quiz/real-programmer/')
    button = driver.find_element_by_class_name("quiz_button")
    button.click()
run(driver_path)
Run Code Online (Sandbox Code Playgroud)

...但我不明白为什么。

我正在为我的 Chrome 版本使用最新版本的WebDriver 。我不知道为什么我得到

<ipython-input-27-c5a7960e105f>:6: DeprecationWarning: executable_path has been deprecated, please pass in a Service object
  driver = webdriver.Chrome(executable_path=driver_path)
<ipython-input-27-c5a7960e105f>:10: DeprecationWarning: find_element_by_* commands are deprecated. Please use find_element() instead
  button = driver.find_element_by_class_name("quiz_button")
Run Code Online (Sandbox Code Playgroud)

...当文档中存在该命令时。

python selenium webdriver selenium-webdriver findelement

92
推荐指数
2
解决办法
13万
查看次数

Selenium在python中按类名查找元素

如何过滤具有相同类的元素?

<html>
 <body>
  <p class="content">Link1.</p>
</body>
<html>
<html>
 <body>
  <p class="content">Link2.</p>
</body>
<html>
Run Code Online (Sandbox Code Playgroud)

selenium

32
推荐指数
5
解决办法
8万
查看次数

在Xpath中使用OR条件来标识相同的元素

我有这个逻辑,当前页面的标题首先点击下一个按钮,再次获取标题,如果两个标题相同,意味着导航没有移动到下一页,它再次点击下一步.

但是,我的问题是title元素的Xpath不同 - 相同的title元素有两个Xpath.一个是其他页面中的另一个页面.

就是这个,

(.//span[@class='g-title'])[2]
Run Code Online (Sandbox Code Playgroud)

要么

.//span[@class='g-title']
Run Code Online (Sandbox Code Playgroud)

那么,我该怎么处理呢?

selenium xpath selenium-webdriver

5
推荐指数
3
解决办法
3万
查看次数

使用Selenium和Python,如何检查按钮是否仍然可点击?

所以我正在使用Selenium和Python进行一些网络抓取,我遇到了问题.我点击"下一步"按钮移动到某个网站的下一页,但是当我到达最后一页时,我需要停止点击它.现在,我这样做的想法就是在try/except语句中使用some_element.click()并等到它给我一个错误,而按钮不再可点击.看来,.click()不会发出任何类型的信号,当按钮无法点击并且不发出任何真或假信号时,它不会抛出错误.

我尝试使用的代码段:

while True:
    try:
       button = driver.find_element_by_class_name('Next_button')
       button.click()
    except:
       break
Run Code Online (Sandbox Code Playgroud)

还有其他方法吗?谢谢和欢呼.

python selenium web-scraping

3
推荐指数
1
解决办法
4598
查看次数

如何确定Selenium中是否存在WebElement?

我知道我可以用 (driver.findElements(By.xpath("Xpath Value")).size() != 0);

但是,我使用的是页面对象模型,其全部目的是在单独的类中预定义WebElement,因此不必在测试类中使用“ FindElements By”。

这是我目前拥有的

if (objPage.webElement.isEnabled()){
   System.out.println("found element");
}else{
   System.out.println("element not found");
}
Run Code Online (Sandbox Code Playgroud)

但是,这试图识别可能不存在的WebElement。当它不存在时,我得到:

没有此类元素”例外。

java selenium pageobjects selenium-webdriver

3
推荐指数
1
解决办法
6617
查看次数

JAVA Selenium WebElement覆盖click()方法

override WebElement click()添加一些wait功能的好习惯,因为在某些页面中我需要单击按钮,并且在某些情况下还没有加载按钮,因此我添加了等待以检查元素是否可见。

所以我的问题是:创建abstract class一个实现WebElement并重写click()方法以添加一些等待功能的更好的方法,还是仅在特定页面中进行纯等待的方法更好?

java selenium automation automated-tests

3
推荐指数
1
解决办法
4979
查看次数

没有找到时如何返回空列表

我想知道List当我试图找到一些WebElement但没有找到时,如何返回空.当然我想避免崩溃,所以这就是我尝试过的:

def getList(): List[WebElement] = {

    try {
      driver.fineElements(By.xpath("bla bla))
    }catch{
      case e: TimeoutException => // What should i put here ???
    }
  }
Run Code Online (Sandbox Code Playgroud)

selenium scala

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