elements復數定位:
在上面的例舉的八中基本定位方式種,都有對應的復數形式,分別是下面這些:
id復數定位find_elements_by_id()
name復數定位find_elements_by_name()
class復數定位find_elements_by_class_name()
tag復數定位find_elements_by_tag_name()
link復數定位find_elements_by_link_text()
partial_link復數定位find_elements_by_partial_link_text()
xpath復數定位find_elements_by_xpath()
css復數定位find_elements_by_css_selector()
這些復數定位方式每次取到的都是具有相同類型屬性的一組元素,所以返回的是一個list隊列,我們也可以利用這個去定位單個的元素。
==================================================================================================================
比如百度首頁種,右上角有新聞、視頻、地圖、貼吧等一些鏈接,我們通過f12查看源碼可以發現,這些鏈接都有共同的class, class="mnav"。
舉個例子,比如定位排在第六個的學術,可以這樣定位:driver.find_elements_by_class_name("mnav")[5].click()
還可以通過css的復數定位寫法:driver.find_elements("css selector",".mnav")[6].click()
當然,也可以借助pop()函數,一般pop()或pop(-1)表示獲取元素種的最后一個,pop(2)表示第三個:
driver.find_elements("css selector",".mnav").pop().click()
======================================================================================================
package rjcs; import java.util.List; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.By; import org.openqa.selenium.WebElement; import org.testng.annotations.Test; import com.thoughtworks.selenium.SeleneseTestNgHelper; public class findby { public static void main(String[] args) { System.setProperty("webdriver.firefox.bin","C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe"); //設置火狐的安裝路徑,防止系統找不到 FirefoxDriver driver = new FirefoxDriver(); //初始化FireFox瀏覽器實例,並打開瀏覽器 try { driver.manage().window().maximize(); //最大化窗口 Thread.sleep(5000); driver.manage().window().maximize(); //最大化窗口 Thread.sleep(5000); driver.get("https://www.baidu.com"); //打開一個網址,方法一 Thread.sleep(5000); driver.findElementsByClassName("mnav").get(2).click(); //打開地圖這個鏈接 //List<WebElement> myList = driver.findElementsByClassName("mnav"); //獲取class的這個數組 //myList.get(0).click(); //打開新聞這個鏈接 Thread.sleep(5000); }catch (Exception e) { e.printStackTrace(); }finally { driver.quit(); } } }
