gpt4 book ai didi

python - 在类方法中定义多个父xpath

转载 作者:太空宇宙 更新时间:2023-11-03 15:46:25 24 4
gpt4 key购买 nike

我在 init 中定义了两个父 XPath,如下所示:

def __init__(self, driver, fieldName):

self.driver = driver

try:
try:
self.text = self.driver.find_element_by_xpath("//form[@name='quickeditfrm']//tr/th/label[text()='%s']" % fieldName)
except:
self.text = self.driver.find_element_by_xpath(QuickEditLocatars.ROWPARENT % fieldName)

except:
try:
self.text = self.driver.find_element_by_xpath(QuickEditLocatars.ROWPARENT % (fieldName + ":"))
except:
self.text = self.driver.find_element_by_xpath("//form[@name='quickeditfrm']//tr/th/label[text()='%s']" % (fieldName + ":"))

但我处于必须使用三个父 xpath 的情况。父 xpath 根据页面的不同而不同。但每个页面不会有全部三个 xpath。它将只有一个父 xpath。

我知道我可以使用 try 和 except,但是有两个或多个父 xpath 会使代码难以维护并变得困惑。有什么建议吗?

最佳答案

解决此问题的一种方法是使用“|”连接 XPath 表达式 (表示“或”)运算符:

def __init__(self, driver, fieldName):
self.driver = driver

expressions = [
"//form[@name='quickeditfrm']//tr/th/label[text()='%s']" % fieldName,
QuickEditLocatars.ROWPARENT % fieldName,
QuickEditLocatars.ROWPARENT % (fieldName + ":"),
"//form[@name='quickeditfrm']//tr/th/label[text()='%s']" % (fieldName + ":")
]
self.text = self.driver.find_element_by_xpath(" | ".join(expressions)

当任何表达式根本找不到该元素时,您可能需要添加一个 try/except 来处理“否定”情况。

关于python - 在类方法中定义多个父xpath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41702124/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com