【问题标题】:How can i parse attribute name as parameter in Python如何在 Python 中将属性名称解析为参数
【发布时间】:2016-04-17 10:08:28
【问题描述】:

我正在尝试将对象属性名称解析为我的方法中的参数,但我得到了

AttributeError: type object 'By' has no attribute 'selector'

这是我的代码:

from selenium import webdriver
from selenium.webdriver.common.by import By

def exist(browser, selector, id):
    try:
        browser.find_element(browser, By.selector, id)
    except NoSuchElementException:
        return False
    return True

这是我的电话:

if exist(browser, 'ID', '#errorTitleText'):
    print 'Element Exists!'

我做错了什么?如果没有“选择器”参数,它就可以工作。

【问题讨论】:

    标签: python selenium parameter-passing


    【解决方案1】:

    CSS_SELECTOR:

     browser.find_element(By.CSS_SELECTOR, selector)
    

    您也可以简单地使用:

    browser.find_element_by_css_selector(selector)
    

    find_element两个参数, byvalue 默认是 by.ID em> 所以如果你想使用id 进行搜索,请输入。

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    
    def exist(browser, by_selector, value):
        try:
            browser.find_element(by_selector, value)
        except NoSuchElementException:
            return False
        return True
    

    然后传入任何你想要的:

    exist(browser,By.ID, "id_value")
    

    【讨论】:

    • 我理解并修复了它,但它仍然给我同样的错误:“AttributeError: type object 'By' has no attribute 'selector'” ...
    • @PitoAxiu,你想用什么来定位,使用 id、css 选择器或究竟是什么?
    • 我正在尝试创建一种方法,根据我提供的任何定位器检查元素是否存在......当我测试它时,我正在检查 ID 为 errorTitleText 的元素
    • 为什么要使用选择器是要按 id 搜索吗?
    • @PitoAxiu,您的版本仍然无法正常工作。你将如何传递选择器?
    【解决方案2】:

    这是我方法的最后一个版本:

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    
    def exist(browser, selector, id):
        try:
            browser.find_element(By.selector, id)
        except NoSuchElementException:
            return False
        return True
    

    我给出了三个属性而不是两个!

    【讨论】:

    • 您仍在访问By.selector,这会引发原始AttributeError。仅靠属性(参数)的数量不能解决问题。
    • @MarkusMeskanen 你是对的......它不工作......我做了这样的工作并且它工作 find_element(getattr(By, selector), id)
    猜你喜欢
    • 2014-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-01
    • 2021-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多