使用Python& amp;从textarea获取文本Selenium Webdriver(没有值属性)

时间:2017-01-03 23:46:49

标签: python html selenium

我一直在寻找并尽力而为,我需要帮助。我正在尝试从页面中的元素中获取文本。它是一个弹出窗口但不是警报或新窗口,只是框架内的另一个弹出窗口。 WebDriver似乎找到了元素,但是当我运行print语句来检查返回的文本时,它始终是一个空行。我试过,而不是get_attribute,.text以及......没有运气。

这是html:

<textarea id="textareafield-2320-inputEl" class="x-form-field x-form-text x-form-textarea" name="activityComments" rows="4" cols="20" autocomplete="off" aria-invalid="false" style="width: 100%;"></textarea>

这是我的代码:

contents = driver.find_element_by_xpath(".//*[@class='x-form-item-input-row']/td[2]/textarea").get_attribute("value")
print contents

1 个答案:

答案 0 :(得分:2)

您的XPath非常广泛。页面上的多个元素可能与此print(len(driver.find_elements_by_xpath(".//*[@class='x-form-item-input-row']/td[2]/textarea")))匹配。要检查它,请尝试1。如果结果超过XPath,您似乎处理错误的元素。

尝试使用更明确的//textarea[starts-with(@id, "textareafield-")][@name="activityComments"]

function obj = roc(timeSeries, varargin)
    %% Input parser

    % 1. Create input parser instance
    p = inputParser;

    % 2. Default values for input arguments
    default_lag = 1;
    default_weightVector = 1;

    % 3. Validation of input arguments
    valid_lag = {'vector', 'nonempty', 'integer', 'positive'};
    check_lag = @(x) validateattributes(x, {'numeric'}, valid_lag);

    % 4. Add input arguments to input scheme
    p.addRequired('timeSeries');
    p.addParameter('lag', default_lag, check_lag);
    p.addParameter('weightVector', default_weightVector);

    % 5. Parse input arguments
    parse(p, timeSeries, varargin{:});

    % 6. Assign results to variables
    lag = p.Results.lag;

    if check_weightVector(p.Results.weightVector, lag) == true
        weightVector = p.Results.weightVector;
    end

    function vout = check_weightVector(weightVector, lag) % validation function
        if length(lag) ~= length(weightVector)
            error('lengthWeightVector:WrongNumberOfElements', 'The number of elements in "weightVector" must correspond to the number of elements in "lag"');
        elseif sum(weightVector) ~= 1
            error('sumWeightVector:SumNotEqualToOne', 'The sum of elements in "weightVector" must equal 1');
        end

        vout = true;
    end


    %% Main code
end