在 selenium 和 python 中获取 class 的值
Getting value of a class in selenium and python
<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
。
我不明白,因为我访问了它的 class,提取了值,但它 returns 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")
因为我必须定义每个文本框,并且事先不知道文本框的数量。这样做也需要花费很多时间。那么,我们该如何解决呢?
print(i.get_attribute("values"))
没有 values
属性,因此,您得到的是 None
。有 value
属性。
除此之外,您的第一种方法完全有意义并且应该有效。
我们可以让它更简单一点,通过 find_elements_by_css_selector()
使用 "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']")
<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
。
我不明白,因为我访问了它的 class,提取了值,但它 returns 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")
因为我必须定义每个文本框,并且事先不知道文本框的数量。这样做也需要花费很多时间。那么,我们该如何解决呢?
print(i.get_attribute("values"))
没有 values
属性,因此,您得到的是 None
。有 value
属性。
除此之外,您的第一种方法完全有意义并且应该有效。
我们可以让它更简单一点,通过 find_elements_by_css_selector()
使用 "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']")