在selenium和python中获得类的价值

时间:2015-05-10 20:33:38

标签: python selenium selenium-webdriver

<input id="value(Medications1)_139038" class="medMedications text-field" type="text" style="width:90%" value="Lantus" maxlength="30000" name="value(Medications1)" autocomplete="off"/>

所以有这个页面有文本框,这些文本框的数量没有固定。其他时候它可能是20,有时只是5,它是随机的。那么有没有办法知道页面中有多少这些文本框?并获取那些文本框的值?

我试过这个:

medicationstextbox_locator = "//*[@class='medMedications text-field ']"
medicationstextbox_locatorTextBox = driver.find_elements_by_xpath(medicationstextbox_locator)

for i in medicationstextbox_locatorTextBox:
    print(i.get_attribute("values"))

这会打印出很多None

我没有得到它导致我已经访问了它的类,提取了值但它返回None

如果可能,我想避免这样做:

medications1 = "//input[@name='value(Medications1)']"
medications2 = "//input[@name='value(Medications2)']"

med1textbox = driver.find_element_by_xpath(med1)
med2textbox = driver.find_element_by_xpath(med2)

med1textbox.get_attribute("value")
med2textbox.get_attribute("value")

因为我必须定义每个文本框,并且事先不知道文本框的数量。这样做也需要花费很多时间。那么,我们如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

  

打印(i.get_attribute(&#34;值&#34))

没有values属性,因此,您获得了None个。有value属性。

除此之外,你的第一种方法完全有道理,应该有用。

我们可以使它更简单并使用&#34; CSS选择器&#34;通过find_elements_by_css_selector()

medications = driver.find_elements_by_css_selector("input.medMedications")

# count
print len(medications)

# values
for medication in medications:
    print medication.get_attribute("value")

或者,您可以检查id属性是否包含Medications

medications = driver.find_elements_by_css_selector("input[id*=Medications]")

或者,对于XPath:

medications = driver.find_elements_by_xpath("//input[contains(@id, 'Medications']")