单击链接单击其后面的图像

时间:2019-05-15 19:08:26

标签: python selenium

我试图单击下拉列表中的一个链接,并且该链接位于也可以单击的图像上方。当我单击链接时,硒背后的图像被点击

该网页为: https://www.youdao.com/w/eng/hello/#keyfrom=dict2.index

如果单击搜索输入旁边的箭头,将显示一种语言列表。第二和第三种语言与广告图片重叠。如果我手动单击它们,将正确选择语言。但是硒将始终单击后面的图像。

整个测试脚本如下

# -*- 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()

我希望选择了单击的语言,但是硒会单击下面的图像并打开另一个页面。

如果单击图像上方未显示的第一和最后一种语言,则会按预期工作。

2 个答案:

答案 0 :(得分:0)

另一种方法是 1.获取下拉式web元素 2.通过使用find_elements_by_tag_name获取dropdown元素中的所有值 3.使用索引单击所需元素

dropdownWebelement = driver.find_element_by_id("langSelection")
allValuesInDrowdown = dropdownWebelement.find_elements_by_tag_name("li")

allValuesInDrowdown[1].click()

答案 1 :(得分:0)

尝试通过executeScript方法中的javascript直接单击它:

#remove the click after the webdriverwait
korean_lang = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "[rel='ko']")))
#click the element directly with executeScript(javascript)
driver.executeScript("arguments[0].click();", korean_lang)

希望这行得通