Selenium打开浏览器并搜索关键字

【开发环境&工具】

selenium-server-standalone-2.52.0.jar, JDK1.8, eclipse, Firefox45.3.0

【实现代码】

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;

public class SearchSelenium2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		// 创建火狐实例
		WebDriver driver = new FirefoxDriver();
		//	打开时百度首页
		driver.get("http://www.baidu.com");
		//	找到输入框
		WebElement queryInputElement = driver.findElement(By.id("kw"));
		//	输入搜索字selenium
		queryInputElement.sendKeys("Selenium");
		//	找到按钮元素
		WebElement submitBtnElement = driver.findElement(By.id("su"));
		//	点击按钮
		submitBtnElement.click();
		//	关闭浏览器
		driver.quit();
	}

}


在使用Selenium进行网页自动化测试时,如果遇到搜索页面加载后,之前的搜索框元素无法定位的情况,可能是由于以下几个原因: 1. **动态加载**:网站可能会使用JavaScript动态生成或修改DOM结构,导致原本静态定位的元素不再可用。在这种情况下,你需要使用`WebDriverWait`配合`expected_conditions`等待元素变为可见、存在或者其他条件满足。 2. **ID或Class名变化**:页面在搜索操作后进行了刷新或者改变了元素的标识符。你需要更新你的定位策略,使用新的ID或Class名,或者利用更稳定的属性如CSS选择器或者XPath。 3. **元素位置改变**:搜索后,元素的位置可能发生了移动。你需要调整`find_element_by_*`函数中的参数,比如通过坐标定位(`element.location_once_scrolled_into_view`),或者基于其他不变的父元素找到它。 4. **浏览器行为差异**:不同浏览器对于动态内容渲染可能有不同步的行为,这可能导致元素在实际加载之前就尝试去查找,这时需要设置适当的时间延迟(`time.sleep()`)。 5. **页面元素状态未变**:检查搜索框是否已经从初始状态转变为输入状态,或者它可能隐藏起来了。确认元素是否显示并且处于预期的交互模式。 要解决这个问题,你可以按照以下步骤尝试: - 使用`try-except`处理可能出现的ElementNotInteractableException或NoSuchElementException异常。 - 调整定位方式并添加适当的等待时间。 - 判断元素是否存在或者状态是否正确,例如检查元素的`is_displayed()`和`is_enabled()`。 ```python from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC search_box_xpath = 'xpath_to_search_box' # 或者其他稳定的定位方式 url = 'http://example.com' driver.get(url) WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, search_box_xpath))) # 添加适当等待时间 search_box = driver.find_element_by_xpath(search_box_xpath) # 确保元素可以交互 if search_box.is_interactable(): search_box.send_keys('关键词') else: print("Search box not interactable after search") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值