【问题标题】:Selenium Python print out value of textfield using get_attribute('value') is not printing the value. I am getting blank printedSelenium Python 使用 get_attribute('value') 打印出文本字段的值不会打印该值。我正在打印空白
【发布时间】:2016-08-08 23:51:01
【问题描述】:

我正在尝试打印文本字段的值。该值没有被打印出来,我得到一个空白输出,空的。文本字段在网页上确实有一个值。 我正在使用 name_element.get_attribute('value') 这应该打印文本字段的值。我不知道为什么它不适合我。

在 PyCharm 中,控制台输出为: print_value_from_name_textfield

下一行没有打印出值 print name_element.get_attribute('value')

我希望打印值“数据对象名称”,因为这是网页文本字段中的值。我得到一个空白输出。

我的代码 sn-p 是:

def print_value_from_name_textfield(self):
    name_element = self.get_element(*MainPageLocators.data_objects_Name_textfield_edit)
    print "print_value_from_name_textfield"
    print name_element.get_attribute('value')

HTML 是:

    <div class="marginbelow">
        <span class="gwt-InlineLabel defaultFormLabelWidthCompact myinlineblock">Name</span>
        <input id="data_configuration_edit_data_object_tb_name" class="gwt-TextBox" type="text"/>
    </div>

在 MainPageLocators 中,文本字段 id 定义为:

from selenium.webdriver.common.by import By
class MainPageLocators(object):
    data_objects_Name_textfield_edit = (By.ID, 'data_configuration_edit_data_object_tb_name')

get_element 实现是:

# returns the element if found
def get_element(self, how, what):
    # params how: By locator type
    # params what: locator value
    try:
        element = self.driver.find_element(by=how, value=what)
    except NoSuchElementException, e:
        print what
        print "Element not found "
        print e
        screenshot_name = how + what + get_datetime_now() # create screenshot name of the name of the element + locator + todays date time.  This way the screenshot name will be unique and be able to save
        self.save_screenshot(screenshot_name)
        raise
    return element

请问我做错了什么? 谢谢, 里亚兹

【问题讨论】:

  • 我在输入元素中没有看到任何属性值,这就是它返回空白的原因。
  • get_attribute('value') 捕获存储实际值的属性。文本捕获内部文本
  • 几个月前我问了一个问题,如何从文本字段中获取打印的值。该 html sn-p 在输入元素中没有任何属性值。该值是通过使用 get_attribute('value') 打印的。我的另一个问题链接是:stackoverflow.com/questions/31609234/…
  • 您确定只有一个元素提供了 ID??
  • 是的,谢谢

标签: python-2.7 selenium selenium-webdriver


【解决方案1】:

如果不幸get_attribute('value') 不起作用,您可以尝试使用execute_script() 获取输入值,如下所示:-

print self.driver.execute_script("return arguments[0].value",name_element)

已编辑:如果输入字段中的值在一段时间后加载,您应该在找到输入元素之前执行一些隐式等待,如下所示:

self.driver.implicitly_wait(10)

name_element = self.get_element(*MainPageLocators.data_objects_Name_textfield_edit)
print "print_value_from_name_textfield"
print name_element.get_attribute('value')

【讨论】:

  • 我现在已将文本字段的值打印到控制台。你的方法奏效了。谢谢你。奇怪的是 get_attribute('value') 不适用于这个元素。它适用于我的其他元素。您的替代解决方法 ("return arguments[0].value",name_element) 有效。
猜你喜欢
  • 1970-01-01
  • 2021-06-27
  • 2012-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多