学习Python中Selenium模块的基本用法(6:页面元素定位方式)

Selenium模块支持通过8种方式定位网页中的元素或元素集合,本文以bing网站和百度网站验证这几种定位方式的基本用法。下面8种使用示例中,函数名代element的返回单个元素,将element替换为elements则返回所有匹配元素。

1、按class属性查找

通过find_element_by_class_name(class值)函数或者find_element(By.CLASS_NAME, class值)查找页面中class属性值等于检索值的元素,如下图所示,bing网站中的输入框class值为b_searchbox,采用下面的代码打开bing网站,找到输入框并输入指定值。

python 复制代码
driver = webdriver.Chrome()
driver.get("https://cn.bing.com/dict?FORM=Z9LH3")

time.sleep(5)

inputElement=driver.find_element_by_class_name('b_searchbox')
inputElement.send_keys("hello world")
2、用css选择器查找

通过find_element_by_css_selector (css选择器值)函数或者find_element(By.CSS_SELECTOR, css选择器值)查找页面中能用css选择器定位的元素,同样是查找bing网站中的输入框,采用下面的代码打开bing网站,找到输入框并输入指定值。其它css选择器形式详见参考文献7。

python 复制代码
driver = webdriver.Chrome()
driver.get("https://cn.bing.com/dict?FORM=Z9LH3")

time.sleep(5)

inputElement=driver.find_element_by_css_selector('.b_searchbox')
inputElement.send_keys("hello world")
3、按ID属性查找

通过find_element_by_id (ID值)函数或者find_element(By.ID, ID值)查找页面中ID值为指定值的元素,同样是查找bing网站中的输入框,采用下面的代码打开bing网站,然后按ID值找到输入框并输入指定值。

python 复制代码
driver = webdriver.Chrome()
driver.get("https://cn.bing.com/dict?FORM=Z9LH3")

time.sleep(5)

inputElement=driver.find_element_by_id('sb_form_q')
inputElement.send_keys("hello world")
4、按name属性查找

通过find_element_by_name (name值)函数或者find_element(By.NAME, name值)查找页面中name值为指定值的元素,同样是查找bing网站中的输入框,采用下面的代码打开bing网站,然后按name值找到输入框并输入指定值。

python 复制代码
driver = webdriver.Chrome()
driver.get("https://cn.bing.com/dict?FORM=Z9LH3")

time.sleep(5)

inputElement=driver.find_element_by_name ('q')
inputElement.send_keys("hello world")

通过find_element_by_link_text(超链接文本值)函数或者find_element(By.LINK_TEXT, 超链接文本值)查找页面中指定显示值的超链接元素,以百度网站为例,查找并点击其中的"图片"链接地址,示例代码及运行效果如下所示。

python 复制代码
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")

time.sleep(5)

inputElement=driver.find_element_by_link_text ('图片')
inputElement.click()

通过find_element_by_partial_link_text (超链接文本值)函数或者find_element(By.PARTIAL_LINK_TEXT, 超链接文本值)查找页面中包含指定显示值的超链接元素,如果匹配多个元素,则只选择第一个元素。以百度网站为例,查找并点击其中包含"盘"的链接地址,示例代码及运行效果如下所示。

python 复制代码
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")

time.sleep(5)

inputElement=driver.find_element_by_partial_link_text  ('盘')
inputElement.click()
7、按元素名称(tag)查找

通过find_element_by_tag_name(元素名称)函数或者find_element(By.TAG_NAME, 元素名称)查找页面中元素名称为指定值的元素,如果匹配多个元素,则只选择第一个元素。下面示例代码查找bing网站中的第一个输入框,并输入指定值。

python 复制代码
driver = webdriver.Chrome()
driver.get("https://cn.bing.com/dict?FORM=Z9LH3")

time.sleep(5)

inputElement=driver.find_element_by_tag_name('input')
inputElement.send_keys("hello world")
8、用XPath表达式查找

通过find_element_by_xpath (xpath值)函数或者find_element(By.XPATH, xpath值)查找页面中符合xpath表达式的元素,如果匹配多个元素,则只选择第一个元素。下面示例代码查找bing网站中的输入框,并输入指定值。关于xpath的语法介绍见参考文献8。

python 复制代码
driver = webdriver.Chrome()
driver.get("https://cn.bing.com/dict?FORM=Z9LH3")

time.sleep(5)

inputElement=driver.find_element_by_xpath ("//input[@name='q']")
inputElement.send_keys("hello world")

参考文献:

1\]https://www.selenium.dev/zh-cn/ \[2\]https://www.selenium.dev/zh-cn/documentation/webdriver/getting_started/ \[3\]https://blog.csdn.net/kk_lzvvkpj/article/details/148610502 \[4\]https://registry.npmmirror.com/binary.html?path=chromedriver/ \[5\]https://chromedriver.chromium.org/ \[6\]https://cn.bing.com/dict?FORM=Z9LH3 \[7\]https://www.w3school.com.cn/css/css_selectors.asp \[8\]https://blog.csdn.net/Gltu_java/article/details/142656171