我是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)
字符串
7条答案
按热度按时间5t7ly7z51#
elementToBeClickable
用于检查元素是否可见和启用,以便您可以单击它。ExpectedConditions.elementToBeClickable
返回WebElement
如果预期条件为真,否则它将抛出TimeoutException
,它永远不会返回null
。所以如果你使用
ExpectedConditions.elementToBeClickable
来查找一个元素,它总是给你一个可点击的元素,所以不需要检查null
条件,你应该尝试如下:字符串
正如你所说的
element.click()
同时传递link
和label
,这并不意味着元素是不可点击的,它意味着返回的元素clicked
,但可能是没有事件执行的元素点击操作。注意:-我建议你总是先尝试通过
id
,name
,className
和其他定位器查找元素。如果你遇到了一些困难,那么使用cssSelector
,并始终给予xpath
定位器最后优先级,因为它比其他定位器定位元素要慢。希望对你有帮助:)
3ks5zfa02#
在某些情况下,
element.isDisplayed() && element.isEnabled()
将返回true
,但元素仍然不可点击,因为它被其他元素隐藏/重叠。在这种情况下,捕获的
Exception
是:org.openqa.selenium.WebDriverException:未知错误:元素在点(781,704)处不可单击。其他元素将收到单击:
<div class="footer">...</div>
个请使用以下代码:
字符串
会成功的
6uxekuva3#
wait.until(ExpectedConditions)
不会返回null,它要么满足条件,要么抛出TimeoutException
。您可以检查元素是否显示并启用
字符串
wz1wpwve4#
有一些事情你必须要注意:
until
条件中遇到的NotFoundException
的示例。click()
,可以用途:字符串
try-catch{}
块中,如下所示:型
executeScript()
方法,如下所示:型
csbfibhn5#
class属性在元素不可点击时包含
disabled
。字符串
e0uiprwp6#
从源代码中可以看到,
ExpectedConditions.elementToBeClickable()
将判断元素是否可见并启用,因此您可以将isEnabled()
与isDisplayed()
一起使用。下面是源代码。字符串
sg3maiej7#
字符串