python - 使用 Selenium 的 Python 中的通用代码,用于从 UI 中读取值
问题描述
我正在使用通用代码来减少重复代码以从 UI 中读取值,如果有任何其他建议请告诉我。
readvaluefromUI(objidtype, objid)
功能如下所述。
它需要objidtype
---> 例如(ID,CSS_SELECTOR,NAME etc)
。
它采用objid
---> 对象的实际 id 并返回对象的文本值。
def readvaluefromUI(objidtype, objid):
try:
if objidtype == "ID":
element = driver.find_element_by_id(objid).text
return(element)
elif objidtype == "CSS_SELECTOR":
element = driver.find_element_by_css_selector(objid).text
return(element)
elif objidtype == "CLASS_NAME":
element = driver.find_elements_by_class_name(objid).text
return(element)
elif objidtype == "XPATH":
element = driver.find_element_by_xpath(objid).text
return(element)
elif objidtype == "TAGNAME":
element = driver.find_elements_by_tag_name(objid).text
return(element)
elif objidtype == "NAME":
element = driver.find_elements_by_name(objid).text
return(element)
except:
Throwable(traceback)
它返回您可以在调用方法中使用的对象。例如
readvaluefromUI(ID, "firstname")
解决方案
您可以通过以下方式简化您的通用方法:(注意:这不是任何最新的对象类型,这已经可用)
def readvaluefromUI(objidtype, objid):
element = driver.find_element(objidtype,objid)
return element.text
在这种情况下,您需要传递 By 类型的 objidtype(例如:By.ID / By.XPATH 等)。为此,您需要导入:
from selenium.webdriver.common.by import By
推荐阅读
- r - 您如何预测具有多个回归变量的 ARIMA?
- mysql - 包含字母字符的 MySQL 选择查询
- coq - 建立树并减少修复参数
- django - 如何以表格形式呈现模型,并使用 django 使用复选框选择其中一些?
- netbeans - netbeans 可以和 noip 一起使用才能远程登录吗?
- php - phpenmod 显示来自其他 php 版本的路径
- c++ - 如何从 C++ 代码启动 IE 并在网页更改后能够获取 html 数据
- regex - 以不规则模式拆分(正则表达式)SCALA
- ios - Apple 是否允许使用套接字在两个 iOS 应用程序之间进行通信?
- php - 在 WooCommerce 管理订单列表页面中按产品发布类型过滤订单