San*_*ppa 12 java selenium automation selenium-webdriver
我是新手Selenium
,需要检查元素是否可点击Selenium
Java
,因为element.click()
传递link
和label
.
我尝试使用下面的代码,但没有工作:
WebDriverWait wait = new WebDriverWait(Scenario1Test.driver, 10);
if(wait.until(ExpectedConditions.elementToBeClickable(By.xpath("(//div[@id='brandSlider']/div[1]/div/div/div/img)[50]")))==null)
Run Code Online (Sandbox Code Playgroud)
需要帮助.
Sau*_*aur 17
elementToBeClickable
用于检查元素是否可见并启用,以便您可以单击它.
ExpectedConditions.elementToBeClickable
返回WebElement
如果预期的条件为真,否则会抛出TimeoutException
,它永远不会返回null
.
因此,如果您使用ExpectedConditions.elementToBeClickable
查找始终为您提供可点击元素的元素,因此无需检查null
条件,您应该尝试如下: -
WebDriverWait wait = new WebDriverWait(Scenario1Test.driver, 10);
WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("(//div[@id='brandSlider']/div[1]/div/div/div/img)[50]")));
element.click();
Run Code Online (Sandbox Code Playgroud)
正如你所说的element.click()
传递两者link
并且label
这并不意味着元素不可点击,它意味着返回的元素,clicked
但可能是没有事件在元素上执行单击操作.
注: -我建议你总是首先试图找到的元素id
,name
,className
和其他定位.如果你遇到一些难以找到然后使用cssSelector
并始终给xpath
定位器的最后优先级,因为它比其他定位器找到一个元素慢.
希望它可以帮助你.. :)
小智 11
有些情况element.isDisplayed() && element.isEnabled()
会返回,true
但仍然无法点击元素,因为它被其他元素隐藏/重叠.在这种情况下,Exception
抓住的是:
org.openqa.selenium.WebDriverException:未知错误:元素在点(781,704)处无法点击.其他元素将收到点击:...使用>>>>>>>
<div class="footer">...</div>
它会工作.
wait.until(ExpectedConditions)
不会返回 null,它会满足条件或 throw TimeoutException
。
您可以检查元素是否显示并启用
WebElement element = driver.findElement(By.xpath);
if (element.isDisplayed() && element.isEnabled()) {
element.click();
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
86610 次 |
最近记录: |