python - 单击链接会单击其后面的图像
问题描述
我正在尝试单击下拉列表中的一个链接,该链接位于一个也可单击的图像上。当我点击链接时,后面的图片会被 selenium 点击
网页为: https: //www.youdao.com/w/eng/hello/#keyfrom=dict2.index
如果单击搜索输入旁边的箭头,将显示一种语言列表。第二和第三语言与广告图片重叠。如果我手动单击它们,将正确选择语言。但是 selenium 总是会点击后面的图像。
整个测试脚本如下
# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
driver = webdriver.Chrome('')
driver.get('https://www.youdao.com/w/eng/hello/#keyfrom=dict2.index')
driver.maximize_window()
#another language select arrow on a different page
another_arrow = driver.find_element_by_css_selector('.arrow')
another_arrow.click()
time.sleep(0.5)
korean_lang = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "[rel='ko']"))).click()
#driver.quit()
我希望点击的语言被选中,但是 selenium 会点击下面的图片并打开一个不同的页面。
如果单击不在图像上方的第一种和最后一种语言,它会按预期工作。
解决方案
另一种方法是 1. 获取下拉 web 元素 2. 使用 find_elements_by_tag_name 获取下拉元素中的所有值 3. 使用索引单击所需元素
dropdownWebelement = driver.find_element_by_id("langSelection")
allValuesInDrowdown = dropdownWebelement.find_elements_by_tag_name("li")
allValuesInDrowdown[1].click()
推荐阅读
- angularjs - 在用户可以从服务器重新验证之前,无法阻止 $stateChangeStart 转换到登录页面
- java - 如何在多选微调器中从 onItemSelected 获取和比较索引值
- docker - 使用 ENTRYPOINT 时未找到文件
- dart - 如何在 Flutter 中获得完整的 HTML 视图功能?
- python - 当您连接到 2 个网络时,如何使用 scapy 通过特定接口发送数据包?
- javascript - 如何利用委托服务账号(已经获得JWT)修改全域邮件?
- amazon-web-services - 使用 CLI 列出特定 DynamoDB 表的流
- python - 我想同时运行 2 个 for 循环,可以吗?
- php - Ampps 安装问题 PHP 模块
- javascript - 如何在 Zapier UI builder 中发送对象数组