我想知道在 Robot Framework 中使用元素路径的正确(官方)方法是什么。 根据文档:
假设我想使用 xpath。例如,如果我了解在 KW 中使用它的正确方法:
Wait Until Page Contains Element locator=xpath://*[@id="post-message-container"]
但在很多情况下,通过谷歌搜索,我发现了这个:
Wait Until Page Contains Element xpath=//*[@id="post-message-container"]
令人惊讶的是,两者都有效,但我认为第二个不应该。 你能帮我解决这个困惑吗?
官方文档中没有
strategy=value
示例,因为他们推荐的语法是strategy:value
。但是,如果您查看另一个名为 Browser library 的类似库,您会发现它们使用了语法 strategy=value
。我想这只是取决于图书馆和他们的建议。
当您提及参数名称时,Python 允许方法/函数参数无序传递。例如:
def foo(x, y):
print(f"x: {x}")
print(f"y: {y}")
foo(1,2)
foo(y=1,x=2)
这很可能是由于 python 中 kwargs 的实现方式造成的。由于机器人本身在 python 之上运行,因此它遵守此约定。
使用此约定的最典型的地方是使用 kwargs 时,但在这种特殊情况下,定位器只是普通的位置参数,因为该关键字如下所示:
@keyword
def wait_until_page_contains_element(
self,
locator: Union[WebElement, None, str],
timeout: Optional[timedelta] = None,
error: Optional[str] = None,
limit: Optional[int] = None,
):
在这种情况下,只有超时、错误和限制是可选的(例如,如果不传入该值,则它们具有默认值)。
因此,以提及其变量名称的格式将参数传递给关键字最有可能起到某种目的文档的作用。定义第一个参数应该是定位器是明确地说明与省略它时的情况相比,它是唯一隐式的,并且依赖于调用者知道参数顺序的事实。