为啥我们在 selenium webdriver 中需要番石榴?
Posted
技术标签:
【中文标题】为啥我们在 selenium webdriver 中需要番石榴?【英文标题】:Why we need guava in selenium webdriver?为什么我们在 selenium webdriver 中需要番石榴? 【发布时间】:2020-04-25 01:41:52 【问题描述】:我用 maven 创建了 selenium web 驱动程序项目。 我在某处读到我们需要添加番石榴依赖项。
任何人都知道为什么我们需要使用 selenium 的番石榴依赖吗?
【问题讨论】:
【参考方案1】:番石榴
Guava 是由 Google 开发的基于 Java 的开源库。它有助于开发人员和测试自动化工程师采用最佳编码实践,并有助于减少编码错误。它为集合、缓存、原语支持、并发、通用注释、字符串处理、I/O 和验证提供实用方法。
Maven 依赖
从 Selenium v3.141.59 客户端开始,Maven 依赖项 为:
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>25.0-jre</version>
</dependency>
tl;博士
您可以在以下位置找到一些相关讨论:
Incompatible library version selenium / guava org.openqa.selenium.remote.service.DriverService$Builder.createArgs()Lcom/google/common/collect/ImmutableList; with Selenium 3.5.3 Chrome 76 java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;I)V with IE and Selenium through Java Exception in thread “main” java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkState(ZLjava/lang/String;Ljava/lang/Object;)【讨论】:
【参考方案2】:这是我能安排的最好的信息。
总结答案:
Selenium 为
Function and Predicates
使用 Guava 库。
以上引用的参考(第 126 页):
https://books.google.de/books?id=PMNiDwAAQBAJ&pg=PA126&lpg=PA126&dq=selenium+and+guava&source=bl&ots=hxRq2Dq61Y&sig=ACfU3U3ro_HhI4cpejvSSSEvWYZMF99l9g&hl=en&sa=X&ved=2ahUKEwiO7oOP6PHmAhUCCewKHfnJDSs4ChDoATABegQIChAB#v=onepage&q&f=false
函数和谓词的简要介绍以及 Selenium 中使用的示例:
Guava 提供了两个基本的“函数式”接口:
Function,具有单一方法B apply(A input)。 Function 的实例通常被认为是可引用的 透明——没有副作用——并且与equals一致, 也就是说,a.equals(b) 意味着 function.apply(a).equals(function.apply(b))示例:
public WebElement apply(WebDriver driver)
return driver.findElement(locator);
here你也可以查。主要用于 Selenium Waits(隐式除外)。
谓词,具有单一方法 boolean apply(T input)。 Predicate 的实例通常被认为是无副作用的 并且与equals一致。示例:
selenium filter with Predicate
here你可以在Guava
官方文档中找到Function and Predicates
的详细信息
希望对你有帮助。
【讨论】:
优秀的答案!谢谢,这刚刚解决了我连续大约 8 小时遇到的一个问题。这样一个简单的修复也 谢谢@AlexanderDunn。我很高兴这个答案有助于解决您的问题。以上是关于为啥我们在 selenium webdriver 中需要番石榴?的主要内容,如果未能解决你的问题,请参考以下文章
为啥拖放在 Selenium Webdriver 中不起作用?
为啥 switch_to_window() 方法不适用于 Python 中的 selenium webdriver?
webdriver 对xpath 支持的怎么样,为啥我在selenium中用xpat能定位到,用driver却定位不到?
关于selenium webdriver chromedriver下载的问题