#切换窗口_悬停
##python
输入框被readonly只读,该处被写成选择内容填入。点击时出现弹窗,弹窗中包含选项,直接定位点击无法做到,发现元素中写了新window,于是判断可能要切换窗口,遂采取两种方案:方案一:切入弹出窗口取出需要的文本值,再切回主窗口,去掉readonly后填入取出的文本值;方案二:切入弹出窗口,悬停(之所以悬停,是怀疑不能直接点击)后进行点击所需选项,切回主窗口为主窗口下步元素定位作准备
#方案一:获取文本值,直接输入
# 获得打开的第一个窗口句柄
window_1 = driver.current_window_handle
#点击搜索按钮
driver.find_element_by_xpath('//input[@type="text"]/parent::div/a')[14].click()
time.sleep(2)
# 获取打开的多个窗口句柄
windows = driver.window_handles
# 切换到当前最新打开的窗口
driver.switch_to.window(windows[-1])
time.sleep(0.5)
#获取文本内容
we = driver.find_element_by_xpath('(.//*[normalize-space(text()) and normalize-space(.)='公司单选'])[1]/following::label[1]'))
bodyStr = we.text()
time.sleep(1)
//返回父窗口
for current_window in windows:
if current_window = window_1:
driver.switch_to.window(current_window)
#去掉readonly
El = driver.find_element_by_xpath('//input[@type="text"]/parent::div')
time.sleep(2)
driver.execute_script('aegument[0].removeAttribute(\"readonly\")',El)
time.sleep(2)
#输入文本内容
driver.find_element_by_xpath('//input[@type="text"]/parent::div]').send_keys(bodyStr)
time.sleep(2)
#方案二:
python
# 获得打开的第一个窗口句柄
window_1 = driver.current_window_handle
#点击搜索按钮
driver.find_element_by_xpath('//input[@type="text"]/parent::div/a')[14].click()
# 获取打开的多个窗口句柄
windows = driver.window_handles
# 切换到当前最新打开的窗口
driver.switch_to.window(windows[-1])
time.sleep(2)
#pyhon悬停
chain = ActionChains(driver)
implement = driver.find_element_by_xpath('(.//*[normalize-space(text()) and normalize-space(.)='公司单选'])[1]/following::label[1]')
chain.move_to_element(implement).perform()
time.sleep(0.5)
//点击选择
driver.find_element_by_xpath('(.//*[normalize-space(text()) and normalize-space(.)='公司单选'])[1]/following::label[1]')).click();
time.sleep(0.5)
//返回父窗口
for current_window in windows:
if current_window = window_1:
driver.switch_to.window(current_window)
##java
String parentWindowId = driver.getWindowHandle(); //获取父窗口句柄
Set<String> allWindowsId = driver.getWindowHandles();//将父窗口id赋值给变量
//点击操作,打开弹窗
driver.findElement(By.xpath()).click();
// 获取所有的打开窗口的句柄
for (String windowId : allWindowsId) {
if (driver.switchTo().window(windowId).getTitle().contains("弹窗标题")) {
driver.switchTo().window(windowId);
Thread.sleep(2000);
//悬停2秒
Actions action =new Action(driver);
action.clickAndHold(driver.findElement(By.xpath("(.//*[normalize-space(text()) and normalize-space(.)='公司单选'])[1]/following::label[1]"))).perform();
Thread.sleep(2000);
//点击选择
driver.findElement(By.xpath("(.//*[normalize-space(text()) and normalize-space(.)='公司单选'])[1]/following::label[1]")).click();
}
}
// 再次切换回原来的父窗口
driver.switchTo().window(parentWindowId)
//关闭弹窗
Set<String> allWindowsId = driver.getWindowHandles();
// 获取所有的打开窗口的句柄
for (String windowId : allWindowsId) {
if (driver.switchTo().window(windowId).getTitle().contains("弹窗标题")) {
driver.switchTo().window(windowId);
break;
}
}