Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Selenium 单击子菜单_Selenium - Fatal编程技术网

Selenium 单击子菜单

Selenium 单击子菜单,selenium,Selenium,这两天我真的被困在这里了。我尝试单击子菜单,当我尝试单击子菜单时,我得到如下错误 未找到子菜单的元素。 我试过下面的代码 WebElement element = driver.findElement(By.id("x-menu-el-P46915788081933044__folderbrowser_PJL")); JavascriptExecutor executor = (JavascriptExecutor)driver; executor.executeScrip

这两天我真的被困在这里了。我尝试单击子菜单,当我尝试单击子菜单时,我得到如下错误

未找到子菜单的
元素。

我试过下面的代码

WebElement element =  driver.findElement(By.id("x-menu-el-P46915788081933044__folderbrowser_PJL"));
     JavascriptExecutor executor = (JavascriptExecutor)driver;
     executor.executeScript("arguments[0].click();", element);
HTML代码

<li id="x-menu-el-P46915788081933044__folderbrowser_PJL" class="x-menu-list-item">
<a id="P46915788081933044__folderbrowser_PJL" class="x-menu-item" href="javascript:var abc = doNothing()" unselectable="on" hidefocus="true">
<img id="ext-gen926" class="x-menu-item-icon " src="netmarkets/images/import.gif">
<span id="ext-gen927" class="x-menu-item-text">Upload Documents from Compressed      File</span>
  • 从压缩文件上载文档

  • 您可能应该使用类名,而不是使用ID

    WebElement element = driver.findElement(By.ClassName("x-menu-list-item"));
    
    或者您可以尝试使用css选择器

    WebElement element = driver.findElement(By.cssSelector("li[class='x-menu-list-item']"));
    
    由于上面返回了多个项目,您可以使用这些项目返回所需的确切元素:

    WebElement element = driver.findElement(By.linkText("Upload Documents from Compressed File")); 
    

    首先单击菜单,然后尝试以下语句-

    findElement(By.xpath(//li[@class='x-menu-list-item']///span[contains(text(),'Upload Documents from Compressed')))。单击(); 或者直接试试这个-

    findElement(By.xpath(//span[contains(text(),'Upload Documents from Compressed')))。单击()


    我想大部分错误都是由于单词之间的空格造成的,如果上面的方法不起作用,请附上一个屏幕截图或提供一些html代码的详细信息,这样我们可以尝试更多的选项,最好都是d。

    看起来id是动态生成的。你确定总是一样的吗?是的,你是对的。ID是动态的。如何单击此动态ID?我更喜欢使用xpath,如何使用
    //li[@ID=“x-menu-list-item”]
    ?或者使用chrome并右键单击,复制xpath,然后检查是否正确useful@user3678068:这是我在尝试使用此Xpath时得到的Xpath“/html/body/div[27]/ul/li[3]/a/span”,但仍然找不到元素。感谢您在等待之后所做的一切。非常感谢各位。使用的代码。睡眠(5000);WebElement Compress=driver.findElement(By.linkText(“从压缩文件上载文档”);JavascriptExecutor executor=(JavascriptExecutor)驱动程序;executor.executeScript(“参数[0]。单击();”,压缩);其他子菜单的类也相同。行吗?这是我得到的xpath“/html/body/div[27]/ul/li[3]/a/span”仍然没有其他子菜单的类名和CSS选择器名称也相同。我使用的
    driver.findelelement(By.LinkText(“从压缩文件上载文档”)
    。WebElement Compress=driver.findElement(By.linkText(“从压缩文件上载文档”);仍然没有得到这样的元素。好的,我已经添加了这个元素作为答案。它使用以下代码工作。睡眠(5000);WebElement Compress=driver.findElement(By.linkText(“从压缩文件上载文档”);JavascriptExecutor executor=(JavascriptExecutor)驱动程序;executor.executeScript(“参数[0]。单击();”,压缩);实际上需要等待。谢谢你的回复