suchen
HeimWeb-FrontendHTML-Tutorialselenium webdriver(2)-页面对象定位_html/css_WEB-ITnose

webdriver的元素定位很灵活,提供了多种定位方式:

Id

LinkText

PartialLinkText

Name

TagName

Xpath

ClassName

CssSelector

这些方法可以在org.openqa.selenium.By中找到,下面一一道来;

假如有这样的需求:登录安居客网站,搜索陆家嘴附近的二手房源,网页是这样的

这个需求涉及到一个输入框和一个提交按钮,先查看网页源码

在输入框中输入“陆家嘴”然后点击“二手房”按钮,如果能跳转到陆家嘴相关页面就完成了这个需求,我们尝试用webdriver提供的元素定位方法来解决

Id                                                                                                                                                                                       

id是唯一标识,通过id来定位是非常快速和准确的

import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;  import org.openqa.selenium.chrome.ChromeDriver;  import org.openqa.selenium.WebElement; public class NewTest  {    public static void main(String[] args)    {          System.setProperty("webdriver.chrome.driver",      "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe");      WebDriver driver = new ChromeDriver();      driver.get("http://anjuke.com");            //id      WebElement text=driver.findElement(By.id("glb_search0"));      text.sendKeys("陆家嘴");      WebElement button=driver.findElement(By.id("btnSubmit"));      button.click();            if(driver.getTitle().contains("陆家嘴"))          System.out.print("搜索成功,当前页面为"+driver.getTitle());      else          System.out.print("搜索失败,当前页面为"+driver.getTitle());            driver.quit();       }  }

Name                                                                                                                                                                                 

提交表单时可以通过name属性获取数据,较id来说并不常用,有id属性时建议优先使用id属性,上面的源码中text输入框是有name属性的,button依然用id来获取(当然,如果测试需要的话可以修改源码,没有修改源码权限的自动化测试是很难进行的)。

import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;  import org.openqa.selenium.chrome.ChromeDriver;  import org.openqa.selenium.WebElement; public class NewTest  {    public static void main(String[] args)    {          System.setProperty("webdriver.chrome.driver",      "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe");      WebDriver driver = new ChromeDriver();      driver.get("http://anjuke.com");            //name      WebElement text=driver.findElement(By.name("kw"));      text.sendKeys("陆家嘴");      WebElement button=driver.findElement(By.id("btnSubmit"));      button.click();            if(driver.getTitle().contains("陆家嘴"))          System.out.print("搜索成功,当前页面为"+driver.getTitle());      else          System.out.print("搜索失败,当前页面为"+driver.getTitle());            driver.quit();       }  }

TagName                                                                                                                                                                           

tagname一般用来获取批量数据,如统计页面链接数,输入框数量等等,用tagname来定位单一元素有点麻烦

import java.util.List;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;  import org.openqa.selenium.chrome.ChromeDriver;  import org.openqa.selenium.WebElement; public class NewTest  {    public static void main(String[] args)    {          System.setProperty("webdriver.chrome.driver",      "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe");      WebDriver driver = new ChromeDriver();      driver.get("http://anjuke.com");            List<WebElement> inputs=driver.findElements(By.tagName("input"));      for(int index=0;index<inputs.size();index++){          if(inputs.get(index).getAttribute("id").equals("glb_search0"))              inputs.get(index).sendKeys("陆家嘴");          if(inputs.get(index).getAttribute("id").equals("btnSubmit"))              inputs.get(index).click();      }                if(driver.getTitle().contains("陆家嘴"))          System.out.print("搜索成功,当前页面为"+driver.getTitle());      else          System.out.print("搜索失败,当前页面为"+driver.getTitle());            driver.quit();       }  }

ClassName                                                                                                                                                                        

当标签具有class属性时也可使用classname来定位,不过要注意class的值不是唯一的findElement方法返回匹配到的第一个元素

import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;  import org.openqa.selenium.chrome.ChromeDriver;  import org.openqa.selenium.WebElement; public class NewTest  {    public static void main(String[] args)    {          System.setProperty("webdriver.chrome.driver",      "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe");      WebDriver driver = new ChromeDriver();      driver.get("http://anjuke.com");            //classname      WebElement text=driver.findElement(By.className("kw"));      text.sendKeys("陆家嘴");      WebElement button=driver.findElement(By.className("btn"));      button.click();                if(driver.getTitle().contains("陆家嘴"))          System.out.print("搜索成功,当前页面为"+driver.getTitle());      else          System.out.print("搜索失败,当前页面为"+driver.getTitle());            driver.quit();       }  }

Xpath                                                                                                                                                                                 

xpath相关教程可以参考w3school上的教程,为了程序的统一性,平时工作中我都是使用xpath来定位元素的

import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;  import org.openqa.selenium.chrome.ChromeDriver;  import org.openqa.selenium.WebElement; public class NewTest  {    public static void main(String[] args)    {          System.setProperty("webdriver.chrome.driver",      "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe");      WebDriver driver = new ChromeDriver();      driver.get("http://anjuke.com");            //xpath      WebElement text=driver.findElement(By.xpath("//input[@id='glb_search0']"));      text.sendKeys("陆家嘴");      WebElement button=driver.findElement(By.xpath("//input[@id='btnSubmit']"));      button.click();                if(driver.getTitle().contains("陆家嘴"))          System.out.print("搜索成功,当前页面为"+driver.getTitle());      else          System.out.print("搜索失败,当前页面为"+driver.getTitle());            driver.quit();       }  }

CssSelector                                                                                                                                                                       

CssSelector教程可以参考css3-selectors,CssSelector和xpath应该是实际工作中用的最多的定位方法了,两者没有优劣之分,看个人喜好吧。

import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;  import org.openqa.selenium.chrome.ChromeDriver;  import org.openqa.selenium.WebElement; public class NewTest  {    public static void main(String[] args)    {          System.setProperty("webdriver.chrome.driver",      "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe");      WebDriver driver = new ChromeDriver();      driver.get("http://anjuke.com");            //cssSelector      WebElement text=driver.findElement(By.cssSelector("input[id='glb_search0']"));      text.sendKeys("陆家嘴");      WebElement button=driver.findElement(By.cssSelector("input[id='btnSubmit']"));      button.click();                if(driver.getTitle().contains("陆家嘴"))          System.out.print("搜索成功,当前页面为"+driver.getTitle());      else          System.out.print("搜索失败,当前页面为"+driver.getTitle());            driver.quit();       }  }

LinkText和PartialLinkText                                                                                                                                                  

LinkText和PartialLinkText用来定位网页中的超链接,需要a标签中的全部或部分内容即可。例如,需要访问热门版块中的古美罗阳可以这样定位

import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;  import org.openqa.selenium.chrome.ChromeDriver;  import org.openqa.selenium.WebElement; public class NewTest  {    public static void main(String[] args)    {          System.setProperty("webdriver.chrome.driver",      "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe");      WebDriver driver = new ChromeDriver();      driver.get("http://anjuke.com");            //linkText      WebElement a=driver.findElement(By.linkText("古美罗阳"));      a.click();      //partialLinkText      //WebElement a=driver.findElement(By.partialLinkText("古美"));      //a.click();      if(driver.getTitle().contains("古美罗阳"))          System.out.print("访问成功,当前页面为"+driver.getTitle());      else          System.out.print("访问失败,当前页面为"+driver.getTitle());            driver.quit();       }  }

层级定位                                                                                                                                                                             

webdriver提供了层级定位的方式即通过父元素访问其子元素,比如,输出热门版块下的所有版块

import java.util.List;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;  import org.openqa.selenium.chrome.ChromeDriver;  import org.openqa.selenium.WebElement; public class NewTest  {    public static void main(String[] args)    {          System.setProperty("webdriver.chrome.driver",      "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe");      WebDriver driver = new ChromeDriver();      driver.get("http://anjuke.com");                  WebElement element=driver.findElement(By.xpath("//div[@id='content_Rd0']/dl[@class='dl0']/dd"));            List<WebElement> links=element.findElements(By.tagName("a"));            for(int index=0;index<links.size();index++){          System.out.println(links.get(index).getAttribute("text"));      }            driver.quit();       }  }


Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
HTML vs. CSS vs. JavaScript: Ein vergleichender ÜberblickHTML vs. CSS vs. JavaScript: Ein vergleichender ÜberblickApr 16, 2025 am 12:04 AM

Die Rollen von HTML, CSS und JavaScript in der Webentwicklung sind: HTML ist für die Inhaltsstruktur verantwortlich, CSS ist für den Stil verantwortlich und JavaScript ist für dynamisches Verhalten verantwortlich. 1. HTML definiert die Webseitenstruktur und den Inhalt durch Tags, um die Semantik zu gewährleisten. 2. CSS steuert den Webseitenstil über Selektoren und Attribute, um es schön und einfach zu lesen. 3. JavaScript steuert das Verhalten von Webseiten über Skripte, um dynamische und interaktive Funktionen zu erzielen.

HTML: Ist es eine Programmiersprache oder etwas anderes?HTML: Ist es eine Programmiersprache oder etwas anderes?Apr 15, 2025 am 12:13 AM

HtmlisnotaprogrammingLanguage; itiSamarkuplanguage.1) htmlstructuresandFormatswebcontentuses.2) itWorkswithCSSForstylingandjavaScriptForinteraktivität, EnhancingWebDevelopment.

HTML: Erstellen der Struktur von WebseitenHTML: Erstellen der Struktur von WebseitenApr 14, 2025 am 12:14 AM

HTML ist der Eckpfeiler der Erstellung von Webseitenstruktur. 1. HTML definiert die Inhaltsstruktur und die Semantik und Verwendung usw. Tags. 2. Stellen Sie semantische Marker wie usw. zur Verfügung, um den SEO -Effekt zu verbessern. 3. Um die Benutzerinteraktion durch Tags zu verwirklichen, achten Sie auf die Verifizierung der Form. 4. Verwenden Sie fortschrittliche Elemente wie in Kombination mit JavaScript, um dynamische Effekte zu erzielen. 5. Zu den häufigen Fehlern gehören nicht abgegebene Bezeichnungen und nicht geeignete Attributwerte, und Überprüfungstools sind erforderlich. 6. Optimierungsstrategien umfassen das Reduzieren von HTTP -Anforderungen, die Komprimierung von HTML, die Verwendung semantischer Tags usw.

Von Text zu Websites: Die Kraft von HTMLVon Text zu Websites: Die Kraft von HTMLApr 13, 2025 am 12:07 AM

HTML ist eine Sprache, mit der Webseiten erstellt, die Webseitenstruktur und -inhalt über Tags und Attribute definiert werden. 1) HTML organisiert die Dokumentstruktur über Tags, wie z. B.. 2) Der Browser analysiert HTML, um das DOM zu erstellen und die Webseite zu rendern. 3) Neue Merkmale von HTML5, wie z. B. Multimedia -Funktionen. 4) Zu den häufigen Fehlern gehören nicht abgestimmte Bezeichnungen und nicht geeignete Attributwerte. 5) Die Optimierungsvorschläge umfassen die Verwendung semantischer Tags und die Reduzierung der Dateigröße.

HTML, CSS und JavaScript verstehen: Ein AnfängerhandbuchHTML, CSS und JavaScript verstehen: Ein AnfängerhandbuchApr 12, 2025 am 12:02 AM

WebdevelopmentRelieSonHtml, CSS und JavaScript: 1) HtmlStructuresContent, 2) CSSstylesit und 3) JavaScriptaddssinteraktivität, Bildung von TheBasisofModerernwebexperiences.

Die Rolle von HTML: Strukturierung von WebinhaltenDie Rolle von HTML: Strukturierung von WebinhaltenApr 11, 2025 am 12:12 AM

Die Rolle von HTML besteht darin, die Struktur und den Inhalt einer Webseite durch Tags und Attribute zu definieren. 1. HTML organisiert Inhalte über Tags wie das Lesen und Verständnis. 2. Verwenden Sie semantische Tags wie usw., um die Zugänglichkeit und SEO zu verbessern. 3. Optimierung des HTML -Codes kann die Ladegeschwindigkeit und die Benutzererfahrung der Webseite verbessern.

HTML und Code: Ein genauerer Blick auf die TerminologieHTML und Code: Ein genauerer Blick auf die TerminologieApr 10, 2025 am 09:28 AM

HtmlisaspecifictypeofcodeFocusedonstructuringuringwebcontent, während "Code" breitincludesluages ​​-ähnlichjavaScriptandpythonforfunctionality.1) htmldefineswebpageStructureStags.2) "Code" cometesaWiNrangeOfLanguagesForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForfirsInsForfunctionNacts

HTML, CSS und JavaScript: Wesentliche Tools für WebentwicklerHTML, CSS und JavaScript: Wesentliche Tools für WebentwicklerApr 09, 2025 am 12:12 AM

HTML, CSS und JavaScript sind die drei Säulen der Webentwicklung. 1. HTML definiert die Webseitenstruktur und verwendet Tags wie z.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
4 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Herunterladen der Mac-Version des Atom-Editors

Herunterladen der Mac-Version des Atom-Editors

Der beliebteste Open-Source-Editor

Sicherer Prüfungsbrowser

Sicherer Prüfungsbrowser

Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

SublimeText3 Englische Version

SublimeText3 Englische Version

Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor