51Testing软件测试论坛

标题: xpath定位元素问题,报错提示找不到页面元素。 [打印本页]

作者: luffy0425    时间: 2017-6-19 12:58
标题: xpath定位元素问题,报错提示找不到页面元素。
本帖最后由 luffy0425 于 2017-6-19 16:32 编辑

public class testRadioButton {
    WebDriver driver = new ChromeDriver();
   
    @Before
    public void setUp() throws Exception{
        driver.get("http://www.w3s.com.cn/tiy/t.asp?f=html_radiobuttons");
    }
   
    @Test
    public void testRadioButton() throws Exception{
        WebElement femaieRadioButton = driver.findElement(By.xpath("/html/body/form/input[2]"));
        
        if(!femaieRadioButton.isSelected()){
            femaieRadioButton.click();
        }
        assertTrue(femaieRadioButton.isSelected());
    }
   
    @After
    public void tearDown() throws Exception{
        //driver.quit();
    }
}报错:org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"css selector","selector":"body > form > input[type=\"radio\"]:nth-child(2)"}。找不到页面元素
用xpath定位不能自动操作按钮到女性,求助大神们是什么原因,怎么解决



作者: msnshow    时间: 2017-6-19 13:25
是不是因为2个选择的项的标识是一样的

作者: luffy0425    时间: 2017-6-19 15:43
msnshow 发表于 2017-6-19 13:25
是不是因为2个选择的项的标识是一样的

不是吧。标识不是有数字区分开吗?
作者: luffy0425    时间: 2017-6-20 11:33
问题已解决。原因是嵌入了frame里,需要用到转换方法,学到了新东西了,此贴慢慢沉吧!
作者: 李笑楠    时间: 2017-6-22 09:17
路过
作者: applepen    时间: 2017-6-22 10:35
luffy0425 发表于 2017-6-20 11:33
问题已解决。原因是嵌入了frame里,需要用到转换方法,学到了新东西了,此贴慢慢沉吧!

先别沉。我也是新手刚接触selenium
这种嵌入frame情况。解决的代码可否
粘贴上来。学习一下。感谢
作者: luffy0425    时间: 2017-6-22 12:54
applepen 发表于 2017-6-22 10:35
先别沉。我也是新手刚接触selenium
这种嵌入frame情况。解决的代码可否
粘贴上来。学习一下。感谢

6楼的朋友,这是我自己修改后的代码,针对嵌入了frame里的,希望能对你有帮助!有不对的地方也请指出来,一起学习一起进步。
@Test
        public void testRadioButton1(){
                //针对嵌入frame里的元素定位
                WebElement frame = driver.findElement(By.xpath("/html/body/div[5]/div[2]/div/div/iframe"));
                driver.switchTo().frame(frame);

                WebElement femaieRadioButton = driver.findElement(By.xpath("/html/body/form/input[2]"));
                if(!femaieRadioButton.isSelected()){
                        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
                        femaieRadioButton.click();
                        driver.switchTo().defaultContent();
                }
                assertTrue(femaieRadioButton.isSelected());
        }




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2