首页 > 解决方案 > 单击链接会单击其后面的图像

问题描述

我正在尝试单击下拉列表中的一个链接,该链接位于一个也可单击的图像上。当我点击链接时,后面的图片会被 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 会点击下面的图片并打开一个不同的页面。

如果单击不在图像上方的第一种和最后一种语言,它会按预期工作。

标签: pythonselenium

解决方案


另一种方法是 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()


推荐阅读