首页 新闻 会员 周边 捐助

xpath定位失败

0
[已解决问题] 解决于 2022-07-29 17:56

在页面定位,写点击事件,跳转到另一个页面,Xpath定位失败。不知道怎么获取跳转网页的xpath值,没有iframe。

宋人鱼的主页 宋人鱼 | 初学一级 | 园豆:14
提问于:2022-07-26 16:56
< >
分享
最佳答案
0

这种情况一般都是iframe造成的,不是的话切换一下页面句柄

奖励园豆:5
起风了~~~ | 小虾三级 |园豆:691 | 2022-07-27 10:12

这个我知道了,但是切换页面句柄在怎么切换回来

宋人鱼 | 园豆:14 (初学一级) | 2022-07-27 10:39

var row = 1;
IWebDriver driver = new OpenQA.Selenium.Chrome.ChromeDriver("E:\drive\chromedriver");
//跳转地址
driver.Navigate().GoToUrl("https://zfcg.czt.zj.gov.cn/");
//睡0.3秒
Thread.Sleep(300);
//获取当前页面句柄
var ss = driver.CurrentWindowHandle;
var a = 1;
var b = 1;
var urlone = driver.FindElement(By.XPath("/html/body/div[3]/div[6]/div[3]/ul/li[" + a + "]/a"));
var urlones = "/html/body/div[3]/div[6]/div[3]/ul/li[position()]a";
//var urls = driver.FindElement(By.XPath(" /html/body/div[3]/div[6]/div[3]/ul/li[position()]"));
for (int i = 0; i < urlones.Count(); i++)
{
//睡0.3秒
Thread.Sleep(300);
urlone.Click();
//获取当前页面句柄
var s = driver.CurrentWindowHandle;
//获取所有页句柄
var hanles = driver.WindowHandles;
foreach (var item in hanles)
{
//切换窗口
driver.SwitchTo().Window(item);
}
var urltwo = driver.FindElement(By.XPath("/html/body/div[2]/div[3]/div[3]/ul/li[" + b + "]/a"));
var urltwos = "/html/body/div[2]/div[3]/div[3]/ul/li[position()]/a";
for (int j = 0; j < urltwos.Count(); j++)
{
//睡0.3秒
Thread.Sleep(3000);
urltwo.Click();//一直点击的都是第一个
b++;
}
//获取所有页句柄
var hanless = driver.WindowHandles;
foreach (var item in hanless)
{
//切换窗口
driver.SwitchTo().Window(item);
}
//睡0.3秒
Thread.Sleep(3000);
a++;

            }
            return (row > 0);
宋人鱼 | 园豆:14 (初学一级) | 2022-07-27 10:43

@宋人鱼:
在跳转页面前加上这段代码
String handleaddSpu = driver.getWindowHandle();
for (String temhandleaddSpu : driver.getWindowHandles()) {
if (!temhandleaddSpu.equals(handleaddSpu))
driver.close();
driver.switchTo().window(temhandleaddSpu);
}

起风了~~~ | 园豆:691 (小虾三级) | 2022-07-29 11:20
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册