Selenium 常见小问题记录

这里持续记录学习中遇到的问题,便于以后再遇到后查阅

1.定位带空格的复合class属性,一般使用 css selector来定位

例如:如下属性,其中包含空格

class="s-top-left-new s-isindex-wrap"

如果使用classname定位该元素 "element=web.find_element_by_class_name('s-top-left-new s-isindex-wrap')" 会报错:

no such element: Unable to locate element: {"method":"css selector","selector":".s-top-left-new s-isindex-wrap"}
  (Session info: chrome=99.0.4844.51)

要使用css selector定位:

element=web.find_element_by_css_selector('[class="s-top-left-new s-isindex-wrap"]')

2.加载loading元素

很多时候,页面还未加载完成时,页面出现一个动态提示"加载中",等页面全部加载完成,自动消失,在出现该提示时,会遮挡页面其他元素,导致定位其他元素报错,因此需要判断"加载中"是否已经消失后再去定位页面元素

像是这种快速闪过的元素,怎么定位?

需要在他出现时,调用driver.getPageSource()方法来获取页面所有元素,获取到页面所有元素,根据关键字 找到该控件后,再定位

3.定位下拉框

(1)定位seclect标签 下拉框:

  如下所示,select标签的下拉框

<select value="xxxx" type=1>
    <option value="待确认">待确认</option>
    <option value="退款中">退款中</option>
    <option value="待结算">待结算</option>
</select>

定位select标签下拉框元素 可以使用Select类,根据元素value、索引、text内容来进行定位:

Select select = new Select(driver.findElement("xxxx"));
// 通过index进行选择
select.selectByIndex(1) 
// 通过value进行选择
select.selectByValue("待确认)
// 通过选项文字进行选择
select.selectByVisibleText("待确认")

(2)定位非 select标签下拉框:

很多时候下拉框没有使用Select标签,而是使用ul

<ul class="el-xxxx">
    <li class="el-select-drop"><span>待确认</span></li>
    <li class="el-select-drop"><span>待结算</span></li>
    <li class="el-select-drop"><span>已完成</span></li>
</ul>

需要定位到下拉框,拉到下拉框里的所有元素,再根据索引定位


WebElement el = findElement(By.cssSelector("xxxxxxx"));
List<WebElement> els = el.findElements(By.className("el-select-drop"));
//选择第二个元素
els.get(1).click();

(3)定位检索式 下拉框,输入关键字,检索出元素再选择

一般我们先定位到该输入框,输入关键字,键盘按 下键,选中该元素,点击回车

这里 输入的关键字 尽量不要使用模糊匹配 而是输入想要选中的元素全称,避免选中其他元素

//找到输入框,并输入关键字
findElement(By.xpath("//*[xxxxx]")).sendKeys("检索关键字");
//按键盘下键 选中检索出来的元素
actions().sendKeys(Key.DOWN).perform();
//按键盘 回车 
actions().sendKeys(Key.ENTER).perform();

(4)python+pytest 元素定位报:InvalidSelectorException

出现这个错误为无效选择器,这里我是用来获取元素 text的

self.get_element(By.XPATH, r'//h3[@class="flex-center"]/text()')

应该为:去掉'text()'

self.get_element(By.XPATH, r'//h3[@class="flex-center"]')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值