selenium webdriver在firefox 上元素定位失败解决方法

 问题:需要点击A元素,但是该元素出现的方式 需要将鼠标悬停在A元素或点击A元素

原先的代码思路:

采用显性等待A元素出现后定位,再利用ActionChains类,将鼠标移至A元素,然后点击B元素

f_elem = wait.until(expected_conditions.presence_of_element_located([By.CSS_SELECTOR,".service"]))

action = ActionChains(d)

# 移动到元素上,.perform动作执行
action.move_to_element(f_elem).perform()
h_elem = wait.until(expected_conditions.visibility_of_element_located([By.XPATH, "//*[text()='xx']"]))
action.click(h_elem).perform()

在谷歌浏览器执行正常,但是在firefox上执行失败,定位到A元素,但是并未悬停。

后面在定位A元素前在该页面强制等待了xx秒,鼠标可以悬停了,又遇到另一个问题,就是悬停之后,右侧出现了一个滚动条(谷歌浏览器无该滚动条),不能直接找到元素点击了,因为元素不在可视范围内,原先采取的是selenium自带的元素滚动到可视范围,不知道为啥这一句有阴影,所以换成了js自带的滚到可视范围。滚动到可视范围后依然不能点击,报如下图错误,后选择强制等待可以点击了。

 

# 加上强制等待
time.sleep(4)
# 定位服务中心

f_elem = wait.until(expected_conditions.presence_of_element_located([By.CSS_SELECTOR,".service"]))

action = ActionChains(d)

# 移动到元素上,.perform动作执行
action.move_to_element(f_elem).perform()
h_elem = wait.until(expected_conditions.visibility_of_element_located([By.XPATH, "//*[text()='呼叫中心-运管系统']"]))
d.execute_script('arguments[0].scrollIntoView({block: "center"})', h_elem)
time.sleep(3)
action.click(h_elem).perform()

虽然已经解决了该问题,但不知道原理是什么。

1.已经采用显示等待A元素出现才进行的悬停操作,为什么还要加上强制等待?

2. 元素已滚动到可视范围内,但是却不能点击

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Selenium WebDriver 是一种用于自动化Web应用程序测试的工具,它提供了一系列的API,用于操作浏览器来模拟用户的行为。它是基于Java编写的,因此可以使用Java语言来编写测试脚本。 Selenium WebDriver API 提供了一些常用方法来控制浏览器,如打开网址、在输入框中输入文本、点击按钮等。这些方法可以让我们对页面上的元素进行定位和操作,以模拟用户在浏览器中的行为。 使用 Selenium WebDriver API,我们可以使用多种定位方式来找到页面上的元素,如通过id、name、class等属性进行定位,也可以通过XPath和CSS选择器来定位定位元素后,我们可以对其执行一系列的操作,如获取元素的文本、获取元素的属性、点击元素等。 Selenium WebDriver API 还提供了一些常用的操作方法,如切换窗口、切换到iframe、执行JavaScript等。这些方法可以帮助我们处理一些特殊的页面场景,如弹窗、嵌套的iframe等。 使用 Selenium WebDriver API,我们可以编写可维护和可扩展的测试脚本。通过使用Java语言的面向对象特性,我们可以将测试代码进行模块化,使其更加易读和易于维护。此外,Selenium WebDriver 还支持多种浏览器,如Chrome、Firefox等,我们可以轻松地在不同的浏览器上运行测试脚本。 总之,Selenium WebDriver API 提供了丰富的功能和强大的灵活性,使得我们可以编写高效和可靠的自动化测试脚本。无论是对于新手还是有经验的测试人员来说,掌握这些API是非常重要的。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值