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
Scala 如何在同一网页中单击仪表板选项卡切换到仪表板_Scala_Selenium_Xpath_Css Selectors_Webdriverwait - Fatal编程技术网

Scala 如何在同一网页中单击仪表板选项卡切换到仪表板

Scala 如何在同一网页中单击仪表板选项卡切换到仪表板,scala,selenium,xpath,css-selectors,webdriverwait,Scala,Selenium,Xpath,Css Selectors,Webdriverwait,我正在使用scala中的selenium自动下载一些文件。我能够登录到该网站,但在此之后,我无法使用其div id移动到“Dashboard tab”。引发的错误是“无法定位元素”。该网页中有两个名为“主页”和“仪表板”的选项卡。登录后,我想转到“仪表板”选项卡。我尝试了所有在线可用的方法,但仍然找不到要单击的选项卡元素。有人能帮我解决这个问题吗?我使用的html源代码如下 <div id="isc_35" eventproxy="DASHBOARD" role="tab" onfocus

我正在使用scala中的selenium自动下载一些文件。我能够登录到该网站,但在此之后,我无法使用其div id移动到“Dashboard tab”。引发的错误是“无法定位元素”。该网页中有两个名为“主页”和“仪表板”的选项卡。登录后,我想转到“仪表板”选项卡。我尝试了所有在线可用的方法,但仍然找不到要单击的选项卡元素。有人能帮我解决这个问题吗?我使用的html源代码如下

<div id="isc_35" eventproxy="DASHBOARD" role="tab" onfocus="if(event.target!=this)return;isc.EH.focusInCanvas(DASHBOARD,true);" onblur="if(window.isc)isc.EH.blurFocusCanvas(DASHBOARD,true);" tabindex="-1" style="position: absolute; left: 88px; top: 0px; width: 105px; height: 26px; z-index: 201080; box-sizing: border-box; overflow: hidden; cursor: pointer;" onscroll="return DASHBOARD.$lh()"><div id="isc_36" eventproxy="DASHBOARD" style="POSITION:relative;display:inline-block;-moz-box-sizing:border-box;box-sizing:border-box;width:100%;vertical-align:top;VISIBILITY:inherit;Z-INDEX:201080;CURSOR:pointer;"><table width="105px" height="26px" cellspacing="0" cellpadding="0"><tbody><tr><td class="tabButtonTop" tabindex="-1" onfocus="DASHBOARD.$47()" valign="center" nowrap="true" align="center">DASHBOARD</td></tr></tbody></table></div></div>
仪表板 到
单击()
,在文本为DASHBOARD的选项卡上,由于元素是一个动态元素,您必须诱导WebDriverWait使该元素可单击,并且您可以使用以下任一选项:

  • css选择器

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("td.tabButtonTop[onfocus^='DASHBOARD']"))).click();
    
  • xpath

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//td[@class='tabButtonTop' and starts-with(@onfocus,'DASHBOARD')][contains(., 'DASHBOARD')]"))).click();
    

我正在使用isc_35作为id查找此选项卡您尝试了什么:~“我尝试了所有在线可用的内容”~,以及主页按钮的HTML是什么?您确定
id=“isc_35”
是唯一的吗?@MosheSlavin-我尝试过使用xpath、css选择器、类名等。我也尝试过使用“单击前等待”。我也尝试过用动作点击。是的,我确信id isc_35是唯一的。Hi@DebanjanB-我尝试过,但收到以下错误:线程“main”org.openqa.selenium.WebDriverException中的异常:未知错误:元素仪表板在点(140,70)处不可单击。其他元素将收到单击:您尚未应用WebDriverWait。诱导WebDriverWait使元素可单击并让我知道状态。我使用WebDriverWait的方式如下:val someElement=new WebDriverWait(driver,100)。直到(ExpectedConditions.presenceOfElementLocated(By.xpath(//td[@class='TabButtop'并以(@onfocus,'DASHBOARD')][包含(,'DASHBOARD')])。单击()这有什么问题吗?检查我的更新答案并让我知道状态。确保您使用ElementToEclickable而不是其他任何东西。我也尝试过让element可单击,但仍然收到以下错误:线程“main”org.openqa.selenium.WebDriverException中的异常:未知错误:元素仪表板在点(140,70)处不可单击。其他元素将收到单击。