python-3.x - 检查 python selenium 中是否存在元素

标签 python-3.x selenium if-statement xpath ui-automation

以下是我的 python selenium 代码

def provideDetails(self, titleEleName, titleText, sbmtBtnName, dropdownOptn, dropdownName):

        self.ui.jobs.setJobTitleEleName(titleEleName, titleText)

        elem = self.ui.jobs.selectButton(dropdownName)

        if elem.is_displayed():
            self.ui.jobs.selectButton(dropdownName)
            self.ui.sleep(4)
            self.ui.jobs.selectAor(dropdownOptn)
        else:
            self.ui.jobs.selectAddAors(dropdownOptn)
            self.ui.sleep(4)

        self.ui.jobs.selectButton(sbmtBtnName)

我必须检查“elem”是否存在。 如果存在,则“if”条件应该发生,如果不存在,则“else”条件应该起作用。 我尝试了这段代码。我收到此错误“属性错误:无类型对象没有属性‘is_displayed’。 任何帮助,将不胜感激。谢谢。

此外,是否有任何替代方法来检查元素是否存在并遵循 if else 命令

最佳答案

一个好方法是使用 explicit wait 。期望检查元素是否存在于页面的 DOM 上并且可见。可见性是指元素不仅显示,而且高度和宽度都大于0。看例子:

self.ui.jobs.setJobTitleEleName(titleEleName, titleText)
browser = webdriver.Chrome()
wait = WebDriverWait(browser, 5)

try:
    wait.until(EC.visibility_of_element_located((By.NAME, dropdownName)))
    self.ui.jobs.selectButton(dropdownName)
    self.ui.sleep(4)
    self.ui.jobs.selectAor(dropdownOptn)
except TimeoutException:
    self.ui.jobs.selectAddAors(dropdownOptn)
    self.ui.sleep(4)

self.ui.jobs.selectButton(sbmtBtnName)

使用 if/else 语句的解决方案:

def provideDetails(self, titleEleName, titleText, sbmtBtnName, dropdownOptn, dropdownName):
    self.ui.jobs.setJobTitleEleName(titleEleName, titleText)
    browser = webdriver.Chrome()
    wait = WebDriverWait(browser, 5)
    elem = wait.until(EC.visibility_of_any_elements_located((By.NAME, dropdownName))) # will return a list of elements

    if elem:
        self.ui.jobs.selectButton(dropdownName)
        self.ui.sleep(4)
        self.ui.jobs.selectAor(dropdownOptn)
    else:
        self.ui.jobs.selectAddAors(dropdownOptn)
        self.ui.sleep(4)

    self.ui.jobs.selectButton(sbmtBtnName)

期望检查网页上至少有一个元素可见。 locator 用于查找元素,一旦找到,就会返回 WebElements 列表。

进口:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException

关于python-3.x - 检查 python selenium 中是否存在元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51492715/

相关文章:

python - 在Kivy中,如何防止像素图像放大时变得模糊?

python-3.x - 为 hist2d 子图添加一个颜色条并使它们相邻

javascript - Selenium 等待新页面加载,JavaScript

batch-file - 为什么命令行参数在 ELSE 中表现得很奇怪?

python - 如何设置 if 语句以使用条件数组作为 python 中的输入

python-3.x - 如何在通过网络接收音频时播放音频?

python - 如何将外部文件中的分数添加到字典中并对它们进行从 1 到 10 的排名

java - 无法在边缘 webDriver 上运行我的 Selenium 测试

python - python 脚本完成后保持 Selenium 浏览器打开

r - R 中 ifelse() 的奇怪行为 : when are the values evaluated?