VisibilityOfElementLocated 与 presenceOfElementLocated
VisibilityOfElementLocated Vs presenceOfElementLocated
考虑一下:
val element = ...
String str = element.getAttribute("innerHTML")
所以如果我只想得到这个 value
使用 presenceOfElementLocated()
代替 visibilityOfElementLocated()
就足够了吗?
如果只想获取值presenceOfElementLocated
提取值就够了
visibilityOfElementLocated
用于测试目的。例如,当您以某种方式与元素交互时,查看元素会发生什么。
您可以同时使用 presenceOfElementLocated
or visibilityOfElementLocated
来获得 value
。
但从性能的角度来看,我猜想 presenceOfElementLocated
will be slightly faster because it's just check that an element is present on the DOM of a page. This does not necessarily mean that the element is visible. while the visibilityOfElementLocated
必须检查 元素是否存在于页面的 DOM 上并且可见 .可见性是指该元素不仅被显示而且高度和宽度都大于0。
因此根据您的情况使用 presenceOfElementLocated
就足够了。
您可以考虑以下几点,根据您的用例选择合适的方法。
当你不关心if元素是否存在时使用presenceOfElementLocated
可见与否,你只需要知道它是否在页面上。
当你需要查找元素时使用visibilityOfElementLocated
应该也是可见的。
希望对你有所帮助..:)
presenceOfElementLocated()
presenceOfElementLocated()
是检查元素是否存在于页面的 DOM 上的期望。这并不一定意味着元素可见。
public static ExpectedCondition<WebElement> presenceOfElementLocated(By locator)
Parameters:
locator - used to find the element
Returns:
the WebElement once it is located
visibilityOfElementLocated()
visibilityOfElementLocated()
是检查元素是否存在于页面的 DOM 上并且可见的期望。可见性是指该元素不仅被显示而且高度和宽度都大于0。
public static ExpectedCondition<WebElement> visibilityOfElementLocated(By locator)
Parameters:
locator - used to find the element
Returns:
the WebElement once it is located and visible
这个用例
要使用 获取 innerHTML
的值,理想情况下,元素需要 visible只是 在场 。所以你必须使用 visibilityOfElementLocated()
.
您有效的基于 java 的代码块将是:
使用visibilityOfElementLocated()
:
WebElement element = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("elementCssSelector")));
System.out.println(element.getAttribute("innerHTML"));
一行:
System.out.println(new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("elementCssSelector"))).getAttribute("innerHTML"));
您基于 python 的有效代码块将是:
使用visibility_of_element_located()
:
element = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "element_css_selector")))
print(element.get_attribute("innerHTML"))
一行:
print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "element_css_selector")))).get_attribute("innerHTML"))
您基于 c# 的有效代码块将是:
使用ElementIsVisible()
:
var element = new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(ExpectedConditions.ElementIsVisible(By.CssSelector("ElementCssSelector")));
Console.WriteLine(element.GetAttribute("innerHTML"));
一行:
Console.WriteLine(new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(ExpectedConditions.ElementIsVisible(By.CssSelector("ElementCssSelector"))).GetAttribute("innerHTML"));
考虑一下:
val element = ...
String str = element.getAttribute("innerHTML")
所以如果我只想得到这个 value
使用 presenceOfElementLocated()
代替 visibilityOfElementLocated()
就足够了吗?
如果只想获取值presenceOfElementLocated
提取值就够了
visibilityOfElementLocated
用于测试目的。例如,当您以某种方式与元素交互时,查看元素会发生什么。
您可以同时使用 presenceOfElementLocated
or visibilityOfElementLocated
来获得 value
。
但从性能的角度来看,我猜想 presenceOfElementLocated
will be slightly faster because it's just check that an element is present on the DOM of a page. This does not necessarily mean that the element is visible. while the visibilityOfElementLocated
必须检查 元素是否存在于页面的 DOM 上并且可见 .可见性是指该元素不仅被显示而且高度和宽度都大于0。
因此根据您的情况使用 presenceOfElementLocated
就足够了。
您可以考虑以下几点,根据您的用例选择合适的方法。
当你不关心if元素是否存在时使用
presenceOfElementLocated
可见与否,你只需要知道它是否在页面上。当你需要查找元素时使用
visibilityOfElementLocated
应该也是可见的。
希望对你有所帮助..:)
presenceOfElementLocated()
presenceOfElementLocated()
是检查元素是否存在于页面的 DOM 上的期望。这并不一定意味着元素可见。
public static ExpectedCondition<WebElement> presenceOfElementLocated(By locator)
Parameters:
locator - used to find the element
Returns:
the WebElement once it is located
visibilityOfElementLocated()
visibilityOfElementLocated()
是检查元素是否存在于页面的 DOM 上并且可见的期望。可见性是指该元素不仅被显示而且高度和宽度都大于0。
public static ExpectedCondition<WebElement> visibilityOfElementLocated(By locator)
Parameters:
locator - used to find the element
Returns:
the WebElement once it is located and visible
这个用例
要使用 innerHTML
的值,理想情况下,元素需要 visible只是 在场 。所以你必须使用 visibilityOfElementLocated()
.
您有效的基于 java 的代码块将是:
使用
visibilityOfElementLocated()
:WebElement element = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("elementCssSelector"))); System.out.println(element.getAttribute("innerHTML"));
一行:
System.out.println(new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("elementCssSelector"))).getAttribute("innerHTML"));
您基于 python 的有效代码块将是:
使用
visibility_of_element_located()
:element = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "element_css_selector"))) print(element.get_attribute("innerHTML"))
一行:
print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "element_css_selector")))).get_attribute("innerHTML"))
您基于 c# 的有效代码块将是:
使用
ElementIsVisible()
:var element = new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(ExpectedConditions.ElementIsVisible(By.CssSelector("ElementCssSelector"))); Console.WriteLine(element.GetAttribute("innerHTML"));
一行:
Console.WriteLine(new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(ExpectedConditions.ElementIsVisible(By.CssSelector("ElementCssSelector"))).GetAttribute("innerHTML"));