问题:
网页中有3个文本框没有id,名称,但它们具有相同的类名。如何在不使用Xpath的情况下找到元素。什么是基本或最简单的方法。
有没有办法以更好的方式定位元素?
答案 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)