[Selenium] 针对下拉菜单出现之后又立马消失的问题,通过Javascript改变元素的可见属性...

public void clickDateDropDownButton() {
		SeleniumUtil.jsClick(driver, page.getDateDropdownButtonOfInvPolicyDialog());
		WebElement dropDown = page.getDropdownListOfDateInInvPolicyDialog();
		
		String oldStyle =dropDown.getAttribute("style");
		logger.info("The old style is : " + oldStyle);
		
		String newStyle="";
		if(oldStyle.contains("display")){
			newStyle = oldStyle.split("display")[0];
		}
		else{
			newStyle = oldStyle+" display: none;";
		}
		
		String javaScript = "return jQuery(arguments[0]).attr('style','"+newStyle+"');";
		((JavascriptExecutor) driver).executeScript(javaScript, dropDown);
		
		logger.info("The new style is : " + newStyle);
	}

  

转载于:https://www.cnblogs.com/MasterMonkInTemple/p/5190269.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Selenium中,当处理动态元素,如下拉菜单(dropdown)时,特别是那些依赖于用户交互(如悬停或点击)才能展开的内容,可能需要额外的时间来等待元素完全加载和变为可操作。为了延长下拉菜单的驻留时间,你可以使用`WebDriverWait`配合`expected_conditions`模块中的条件方法。 以下是一个示例代码片段,展示如何在Selenium中增加下拉菜单的等待时间: ```python from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 定义下拉菜单元素的定位器 dropdown_locator = (By.XPATH, '//*[@id="your_dropdown_id"]') # 驻留时间设置,例如3秒,根据实际情况调整 wait_time = 3 # seconds # 创建WebDriverWait实例 wait = WebDriverWait(driver, wait_time) # 使用expected_conditions的presence_of_element_located等待元素出现 try: element = wait.until(EC.presence_of_element_located(dropdown_locator)) except TimeoutException: print("Element took too long to load") else: # 当元素存在时,执行更多操作,如模拟用户点击 element.click() # 延长下拉菜单展开时间 wait.until(EC.element_to_be_clickable((By.XPATH, '/*dropdown展开后的子选项定位*/'))) # 等待下拉菜单内的子项完全加载 dropdown_submenu_locator = (By.XPATH, '/*下拉菜单子项定位*/') wait.until(EC.element_to_be_clickable(dropdown_submenu_locator)) # 执行针对下拉菜单的操作...

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值