我正在尝试检查该字段是否存在,如果存在,我需要确保它是一个只读字段。
这是我尝试过的,但我不认为这是一种非常有效的方法:
if self.driver.find_element_by_xpath("//input[@id='cname']"):
self.driver.find_element_by_xpath("//input[@id='cname' and @readonly='readonly']")
elif self.driver.find_element_by_xpath("//input[@id='address']"):
self.driver.find_element_by_xpath("//input[@id='address' and @readonly='readonly']")
elif self.driver.find_element_by_xpath("//input[@id='address2']"):
self.driver.find_element_by_xpath("//input[@id='address2' and @readonly='readonly']")
elif self.driver.find_element_by_xpath("//input[@id='city']"):
self.driver.find_element_by_xpath("//input[@id='city' and @readonly='readonly']")
# country
elif self.driver.find_element_by_xpath("//input[@id='country']"):
self.driver.find_element_by_xpath("//input[@id='country']/../select[@disabled='disabled']")
我也试过使用这个方法,但问题是当字段存在而不是只读时它不会抛出错误:
def verifyReadOnly(self, driver):
try:
self.driver.find_element_by_xpath("//input[@id='cname' or @id='address' or @id='city' or @id='address2' and @readonly='readonly']")
except NoSuchElementException:
pass
try:
self.driver.find_element_by_xpath("//input[@id='cf_2698238' and @readonly='']")
except NoSuchElementException:
pass
try:
self.driver.find_element_by_xpath("//input[@id='country']/../select[@disabled='disabled']")
except NoSuchElementException:
pass
答案 0 :(得分:2)
您可以使用element.is_enabled()
来确定元素是否只读。如果是只读,is_enabled()
将返回false
。请参阅the docs。
当我编写我将重用的代码时,我会编写一个函数。在这种情况下,我会编写一个接受locator参数的函数,然后如果元素存在且true
为is_enabled()
则返回false
。然后,您将为每个元素调用此函数,并断言每个返回值为true
。如果您需要帮助将定位器作为参数传递,This answer可以帮助您入门。