如何在selenium WebDriver中找到没有xpath,id,name的Element

时间:2014-12-05 07:41:54

标签: selenium selenium-webdriver

问题:

网页中有3个文本框没有id,名称,但它们具有相同的类名。如何在不使用Xpath的情况下找到元素。什么是基本或最简单的方法。

有没有办法以更好的方式定位元素?

6 个答案:

答案 0 :(得分:2)

如果排序是静态的,并且类名相同,则可以将cssSelector与nth-child()一起使用。

举个例子: 你有一个有序的清单。

WebElement we = findElement(By.cssSelector("li:nth-child(1)"));

我可能会使用cssSelector并获取每个循环使用a的元素列表,并通过单击或对符合要求的元素执行操作来循环。

答案 1 :(得分:1)

您还可以通过以下方式找到元素:

1 - 按标签名称 2 - 通过css选择器

在您的情况下,Css选择器适合。请参阅以下css选择器的文本框示例程序:

      FirefoxDriver driver = new FirefoxDriver();

     driver.get("https://www.google.co.in/?gfe_rd=cr&ei=42uBVO_NEKXM8gfL4oHIAQ&gws_rd=ssl");

     driver.findElement(By.cssSelector("#gbqfq")).sendKeys("test");

答案 2 :(得分:0)

正如您的问题所说的那样,不要使用'id','name'和'Xpath',并在你提到的答案中使用Xpath来查找输入框标签,这可能会让采访者对答案不满意。 但是,我们可以用于Web元素识别的其他技术如下:

按班级名称
通过LinkText
按部分Linktext
 按TagName
 通过CSS

另请参阅以下链接,它将帮助您更详细地了解此技术。

How to locate Element without xpath, id, name in selenium WebDriver

答案 3 :(得分:0)

您可以使用CSSSelector找到这些文本框。 例如:- “     List elements = wdriver.findElementsBycssSelector(“tagname [classname ='something']”);' 然后遍历列表以获取特定的文本框。

答案 4 :(得分:0)

如果使用 Microsoft Edge 驱动程序

右键单击您的元素,选择检查

在检查窗口中,再次右键单击它复制 -> 复制完整的 XPath

那么..

在 Selenium 中(如果使用 python)

myElem_1b = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.XPATH, 'your XPATH')))

答案 5 :(得分:-3)