selenium webdriver Java:改进;如有其他",;演出

selenium webdriver Java:改进;如有其他",;演出,java,webdriver,selenium-webdriver,Java,Webdriver,Selenium Webdriver,我正在努力实现以下目标: 如果存在特定元素,请单击它并返回主页 否则,只需返回主页,测试将继续进行而不会失败 我已经想出了下面的代码,但它真的很慢。我不确定有没有更好的方法来实现这一点?任何意见将不胜感激 boolean exists = driver.findElements( By.id("xxx")).size() != 0; if (exists) { driver.findElement(By.id("xxx")).click(); driver.find

我正在努力实现以下目标:

  • 如果存在特定元素,请单击它并返回主页
  • 否则,只需返回主页,测试将继续进行而不会失败
我已经想出了下面的代码,但它真的很慢。我不确定有没有更好的方法来实现这一点?任何意见将不胜感激

boolean exists = driver.findElements( By.id("xxx")).size() != 0;

if (exists)
  {
     driver.findElement(By.id("xxx")).click();
     driver.findElement(By.cssSelector("xxx")).click();
  }
  else
  {
     driver.findElement(By.cssSelector("xxx")).click();
   }

你用什么做CSS选择器?您可以通过调整这些参数来提高性能。另一个会减慢速度的事情是当页面有太多内容时

查看CSS选择器和正在扫描哪些DOM元素的示例会很有帮助

例如,如果您的页面充满1000个DIV元素,则类如下:

<div class="smallItem">...</div>
<div class="largeItem">...</div>
<div class="smallItem">...</div>
".smallItem"

要选择所有DIV元素,它必须扫描每个DOM元素并计算class属性。

CSS选择器使用什么?您可以通过调整这些参数来提高性能。另一个会减慢速度的事情是当页面有太多内容时

查看CSS选择器和正在扫描哪些DOM元素的示例会很有帮助

例如,如果您的页面充满1000个DIV元素,则类如下:

<div class="smallItem">...</div>
<div class="largeItem">...</div>
<div class="smallItem">...</div>
".smallItem"

要选择所有的DIV元素,它必须扫描每个DOM元素并在class属性上进行计算。

我找到了降低性能的原因。这是一条线:

driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
由于该语句,它将等待元素验证30秒

将其更改为:

driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS);

。。现在它就像一个符咒一样工作…:)

我找到了降低性能的原因。这是一条线:

driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
由于该语句,它将等待元素验证30秒

将其更改为:

driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS);
。。现在,它就像一个符咒……:)