我如何在Python中解析属性名称作为参数

时间:2016-04-17 10:08:29

标签: python selenium parameter-passing

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

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!'

我做错了什么?没有'选择器'参数它正在工作。

2 个答案:

答案 0 :(得分:1)

CSS_SELECTOR

 browser.find_element(By.CSS_SELECTOR, selector)

您也可以使用:

browser.find_element_by_css_selector(selector)

find_element需要两个参数, by value默认为 by.ID 所以,如果您想使用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")

答案 1 :(得分:-1)

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

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

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