Selenium Web Driver - 通用的 find_by() 方法?
我正在尝试把一些用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);
}