<ul style="max-height: 230px; overflow-y: auto;" class="dropdown-menu inner selectpicker" role="menu">
<li class="" rel="0"><a tabindex="0" class="" style=""><span class="text">Please Choose</span></a></li>
<li class="" rel="1"><a tabindex="0" class="" style=""><span class="text">QQQQ</span></a></li>
<li class="" rel="2"><a tabindex="0" class="" style=""><span class="text">PPPP</span></a></li>
<li class="" rel="3"><a tabindex="0" class="" style=""><span class="text">abc</span></a></li>
<li class="" rel="4"><a tabindex="0" class="" style=""><span class="text">aaaaaaaa</span></a></li>
</ul>
选择最后一个元素
driver.findElement(By.xpath("(//ul[@class='dropdown-menu inner selectpicker']/li)[last()]/a/span[@class='text']")).click();
xpath文档链接
http://www.w3.org/TR/xpath/
这里需要注意,如果页面中有两个<ul><li>...</li></ul>,需要先定位到特定的ul,不然li[last()]会始终选择当前页面的最后一个li
Please Choose QQQQ PPPP abc aaaaaaaa选择最后一个元素driver.findElement(By.xpath("(//ul[@class='dropdown-menu inner selectpicker']/li)[last()]/a/span[@class='text']")).click();
第
一个
li
的样式:
li
:first-child { background:#f00; }
最后
一个
li
的样式:
li
:last-child { background:#000; }
第n个
li
的样式:
li
:nth-child(n) { background:#000; }
倒数第二个
li
的样式:nth-last-of-type(2){ background:#000; }
奇数列表:
li
:nth-child(odd) { background:#f00; }
偶数列表:
li
:nth-chi
from
selenium
import webdriver
chrome = webdriver.Chrome()
chrome.get('https://www.bi
li
bi
li
.com')
ul
= chrome.find_element_by_xpath('//*[@id="primary_menu"]/
ul
')
li
s =
ul
.find_elements_by_xpath('
li
')...
from
selenium
.webdriver.support.wait import WebDriverWait
#导入条件判断模块
from
selenium
.webdriver.support import expected_conditions as EC
#导入查询
元素
模块
from
selenium
.webdriver.com
selenium
操作页面下拉框,一般来说分为两种情况,一种是标准的select标签下拉框;另一种是非select类下拉框,比如
ul
-
li
标签下拉框。针对select标签的下拉框,
selenium
提供了
一个
select类;针对非select标签实现的下拉框,可以通过模拟鼠标点击的方式实现操作。
**1、select标签下拉框**
如下图所示,下拉框为select标签,此时可以使用select类提供的三种方法定位到下拉框中的
元素
。
from
selenium
.webdriver.support.ui import Select
# 通过index进行选择
Select(driver.find_element_by_name("form:j_idt163")).select_by_index(1)
# 通过value进行选择
Select(driver.find_element_by_name("form:j_idt163")).select_by_value("中风险")
xpath为:/html/body/div[6]/div[1]/div[1]/
ul
/
li
后来发现,如果操作的步骤不一样,比如先点这和点了那,导致该
元素
的xpath不一致
由于不同的操作,xpath可能为:
/html/body/div...
import org.openqa.
selenium
.By;
import org.openqa.
selenium
.WebDriver;
import org.openqa.
selenium
.WebElement;
import org.openqa.
selenium
.chrome.ChromeDriver;
pub
li
c class
Selenium
Test {
pub
li
c static void main(String[] args) {
// 设置ChromeDriver路径
System.setProperty("webdriver.chrome.driver", "path/to/chromedriver");
// 创建
一个
Chrome浏览器实例
WebDriver driver = new ChromeDriver();
// 打开Google主页
driver.get("https://www.google.com");
// 找到搜索框并输入关键字
WebElement searchBox = driver.findElement(By.name("q"));
searchBox.sendKeys("
selenium
");
// 提交搜索请求
searchBox.submit();
// 等待搜索结果页面加载完成
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
// 输出搜索结果数量
WebElement res
ul
tStats = driver.findElement(By.id("res
ul
t-stats"));
System.out.println("搜索结果数量:" + res
ul
tStats.getText());
// 关闭浏览器
driver.quit();
需要注意的是,此脚本需要下载并安装Chrome浏览器和ChromeDriver,以及添加
selenium
-
java
和
selenium
-chrome-driver依赖。
严重: 子容器启动失败java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: 无法启动组件
hanjiangxuehua:
严重: 子容器启动失败java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: 无法启动组件
t8sdidfyofixjx473u:
stackoverflow上图片无法显示
SnakeHit: