<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")
因为我必须定义每个文本框,并且事先不知道文本框的数量。这样做也需要花费很多时间。那么,我们如何解决这个问题?
答案 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']")