当前位置: 首页 > 知识库问答 >
问题:

Selenium Webdriver Python-检查元素是否可见/检测到/存在[重复]

卢俊发
2023-03-14

我想检查以下XPath的Selenium Web驱动程序是否可见/存在/检测到元素:

//*[@data-animate-modal-popup="true"]

当元素可见/存在/检测到时,是否有任何Selenium函数返回TRUE或FALSE?

上次我使用了下面的IF-Else

phone_number_invalid = driver.find_element_by_xpath('//*[@data-animate-modal-popup="true"]')
if phone_number_invalid:
     code here .....

每当未找到元素时,find_element\u by_xpath总是抛出一个错误。我只想在元素可见/存在/检测时得到TRUE或FALSE。

非常感谢。

共有3个答案

李辉
2023-03-14

对于您的问题,您是否已经找到了该元素,或者需要检查在执行某些操作后该元素是否可见?

  1. 如果您已经拥有该元素

从元素中显示使用方法。例如:

# you have located element and assign it to elem
visibility = elem.is_displayed()
print(visibility) # will print True or False

使用fluent wait,并使用try except将其包装。

from selenium.common.exceptions import TimeoutException

def check_visible_by_xpath(xpath, timeout=2):
    # Will actively search for the element in 2 seconds.
    # If found, return True and stop waiting.
    # If 2 seconds threshold reaches, return False (cannot find it visible in 2 seconds)
    try:
        element = WebDriverWait(driver, timeout).until(
            EC.visibility_of_element_located((By.XPATH, xpath)))
        return True
    except TimeoutException:
        return False



# ...
# Some actions here
type_in_phone_number()
# Now you want to check, if after your previous action, something pops up??

visibility = check_visible_by_xpath('//*[@data-animate-modal-popup="true"]', 2)
# check and do something about it
if visibility:
    action_if_visible()
else:
    action_if_not_visible()

通学真
2023-03-14
  • 你为什么不为了方便而使用分机呢
  • 使用铬:
  • 对检查元素使用“Xpath助手”:

https://chrome.google.com/webstore/detail/xpath-helper/hgimnogjllphhhkhlmebbmlgjoejdpjl?hl=en

  • 使用“Xpath finder”查找元素:

https://chrome.google.com/webstore/detail/xpath-finder/ihnknokegkbpmofmafnkoadfjkhlogph?hl=en

芮念
2023-03-14

没有本地元素来检查元素是否存在,您可以使用:

创建一个函数:

public boolean isElementPresent(By by){
        try{
            driver.findElement(by);
            return true;
        }
        catch(NoSuchElementException e){
            return false;
        }
    }

现在在if的情况下调用它:

 if(isElementPresent(By.xpath("//div[contains(text(),'Report name already exists. Please enter another name.')]")))
   {
       //code
   }
   else if(isElementPresent(By.xpath("//div//span[contains(text(),'Grid Report saved successfully.')]")))
   {
       //code
   }

第二种选择:

List<WebElement> element1 = driver.findElement(By.xpath("//div[contains(text(),'Report name already exists. Please enter another name.')]"));
   List<WebElement> element2 = driver.findElement(By.xpath("//div//span[contains(text(),'Grid Report saved successfully.')]"));

   if(element1.isEmpty() )
   {
       //first set of code
   }
   else if(element2.isEmpty())
   {
       //second set of code
   }

第二个选项有更多的处理,所以更推荐第一个选项

 类似资料:
  • 问题内容: 有什么方法可以检查元素在纯JS(无jQuery)中是否可见? 因此,例如,在此页面中:PerformanceBikes,如果将鼠标悬停在Deals上(在顶部菜单上),则会显示一个交易窗口,但开始时未显示。它在HTML中,但不可见。 那么,给定一个DOM元素,我如何检查它是否可见?我试过了: 但它似乎不起作用。我想知道应该检查哪些属性。我想到: 还有其他我可能会想念的东西吗? 问题答案:

  • 有没有什么方法可以让我检查一个元素在纯JS(没有jQuery)中是否可见? 例如,在这个页面:Performance Bikes中,如果你将鼠标悬停在Deals(在顶部菜单上)上,就会出现一个Deals窗口,但一开始并没有显示出来。它在HTML中,但不可见。 那么,给定一个DOM元素,我如何检查它是否可见呢?我试过: 还有其他我可能失踪的吗?

  • 本文向大家介绍如何检查可见DOM中是否存在元素?,包括了如何检查可见DOM中是否存在元素?的使用技巧和注意事项,需要的朋友参考一下 我们可以使用Node.contains方法执行此检查。Node.contains()方法返回一个布尔值,该值指示节点是否为给定节点的后代,即节点本身,其直接子级(childNodes)之一,子级的直接子级之一,依此类推。 示例 例如,您要查找具有id test的元素,

  • 我有一对夫妇的变量,我想保存或不保存到数据库取决于是否我已经设置为隐藏/可见的javascript函数,我已经搜索了一段时间,但找不到任何东西。谢谢!

  • 问题内容: 使用和,我一直在页面上隐藏/显示一个元素,但是有两个按钮,一个用于隐藏,一个用于显示。我现在想要 一个按钮来同时切换 两者 。 我的HTML / JavaScript是这样的: 我想要的HTML / JavaScript: 如何检测元素是否可见? 问题答案: 您正在寻找: 尽管您可能考虑到仍在其他地方使用它,但应该将选择器更改为使用jQuery: 重要的是要注意,如果目标元素的父元素中

  • 问题内容: 如果该元素是通过方法创建的,如何检查该元素是否存在? 对我不起作用。 问题答案: 对我不起作用。 您需要在元素ID之前添加: 使用香草JavaScript,不需要例如hash(),但是使用jQuery时,确实需要像基于CSS一样将哈希放入目标元素。