Selenium Web Driver - 通用的 find_by() 方法?

0 投票
1 回答
803 浏览
提问于 2025-04-18 08:24

我正在尝试把一些用Selenium Remote Control写的代码转换成使用Selenium Web Driver的格式,方法是从IDE重新导出为Python Web Driver格式(而不是Python Remote Control格式)。很多定位器只是简单的定位器,并没有说明它是id、name、css、xpath等。Selenium Remote Control(和IDE)会尝试每种方法,直到找到有效的。

但是,Python Web Driver导出对此不太友好,每一行都填满了:

# ERROR: Caught exception [Error: locator strategy either id or name must be specified explicitly.]

有没有什么像find_by_anything(locator)这样的方式可以在Selenium Web Driver中使用?我不在乎速度,只想要功能。

1 个回答

0

简单来说,你的问题的答案是“不”。

Selenium没有一种方法可以接受任何类型的定位符,然后直接给你网页元素。你必须使用特定的方式,比如通过id、class、xpath、css选择器等等。

不过,你可以自己创建一个新方法,让它来帮你完成这个工作。可能像下面这样。

下面是我自己写的一个Java方法,它可以接受任何类型的By对象。

public WebElement findElement(By obj){
   return driver.findElement(obj);
}

撰写回答