Selenium-Python-为什么要使用By类?
在过去的几天里,我一直在搜索,试图找出在Selenium for Python中使用Selenium-Python-为什么要使用By类?,python,selenium,automation,Python,Selenium,Automation,在过去的几天里,我一直在搜索,试图找出在Selenium for Python中使用By类的优势。它似乎返回一个字符串元组 与标准硒方法相比,使用这种方法有哪些优点 例如:By.ID,'password'vsfind\u element\u By\u ID('password') 为了使用Selenium,我需要WebElements;所以我不知道为什么要使用By类。有人能解释一下吗?ID是指你在寻找一个独特的/重要的元素。类将帮助您查找元素的集合。一个类可以包含许多元素,当您最终得到重复的ID
By
类的优势。它似乎返回一个字符串元组
与标准硒方法相比,使用这种方法有哪些优点
例如:By.ID,'password'
vsfind\u element\u By\u ID('password')
为了使用Selenium,我需要WebElements;所以我不知道为什么要使用
By
类。有人能解释一下吗?ID是指你在寻找一个独特的/重要的元素。类将帮助您查找元素的集合。一个类可以包含许多元素,当您最终得到重复的ID和名称时,可能会出现这种情况。然后首先查找类名,并尝试查找ID为的元素。这应该可以工作,因为selenium将查找上述类中的ID
WebElement parentE = driver.findElement(By.className("button"));
WebElement childE = parentE.findElement(By.id("submit"));
childE.submit();
使用的主要优点是它具有高度的可重用性 例如,如果您发现网站的“提交”按钮的名称和类型一致,则如下所示:
<input value="Submit" name="ok" type="submit">
如果更改了html,您只需要编辑By对象
进一步阅读
您还可以将多个BY链接到
额外的
正如您所担心的,html ID在现实生活中通常是非唯一的。所以,大多数情况下,您希望非常具体地查找要查找的元素,这时xpath和css选择器就派上了用场
例如,如果您尝试从html获取google search按钮,如下所示:
<input value="Google Search" aria-label="Google Search" name="btnK" type="submit" jsaction="sf.chk">
或css选择器:
driver.findElement(By.cssSelector("input[name='btnK'][type='submit']"))
这两个查询执行的操作完全相同,即获取名称为“btnK”且类型为“submit”的输入。如果您有重复的ID,则它不符合良好的HTML,需要解决此问题。如果我想找到元素的集合,我会做
find\u elements\u by\u class\u name
。所以仍然没有明显的理由使用By
类。我一生都找不到那条线索。从技术上讲,这将是一个重复的线程。非常感谢你find\u element\u by.*
方法在引擎盖下使用by
。它们只是一种方便。直接使用没有任何好处。
driver.findElement(By.xpath("//input[@name='btnK'][@type='submit']");
driver.findElement(By.cssSelector("input[name='btnK'][type='submit']"))