Selenium WebDriver IE按钮问题

3

我一直在为FF编写脚本,但希望稍加修改后也能在其他浏览器上运行,但似乎IE驱动程序存在按钮问题?

我有一个简单的webelement.click()按钮,它不会抛出错误,但无法点击该按钮。在FF中很好用。我可以获取文本,获取值,所以我知道查找语句没问题,只是无法点击它。

希望能得到您的想法或帮助

仅做参考

WebElement element;
element = driver.findElement(By.id("pageheader_login"));
element.click();

HTML - 这个控件上有三个按钮,我现在只对登录感兴趣。

<div id="_ctl0_pageheader_navcontainer">
  <div id="phwelcome">

    <br class="clear" />
  </div>
  <span id="navtext">

    <a id="_ctl0_pageheader_lnkRegister" class="logichref" 
       href="http://Register/1">Register Today</a>
    <label id="_ctl0_pageheader_lblRegisterBar" class="barhide">| </label>

    <a id="_ctl0_pageheader_customerconnection" class="logichref" 
       href="http://test.com" target="_blank">Help & Training</a>
    <label class="bar">| </label>
    <a class="logichref" href="http://test.aspx"
       onmouseover="window.status='';return(true);" 
       onmouseout="window.status='';return(false);"
       target="_blank">What's New</a> 
    <label class="bar">| </label>
    <a id="_ctl0_pageheader_login" class="lbOn loginModal" 
       href="http://test/loginlightbox.aspx">Login</a>
  </span>
</div>     

请问您能否发布一个包含按钮的HTML代码片段? - Sergii Pozharov
added above in orig post - ducati1212
7个回答

5

我遇到同样的问题,在我的IE8上点击无法工作。 我找到了一个解决办法,使用element.sendKeys("\n")来执行点击(基本上是在按钮上按下回车键)。 虽然不太干净,但在修复这个问题之前它可以解决!


1
你知道在Selenium中是否有关于这个bug的记录吗?我正在搜索但是找不到任何信息... - Randy
你的解决方案听起来很聪明,但如果我们使用iPad模拟器会有什么等效性? - Emna Ayadi

5

我曾经因为无法使用webelement的click方法而几乎放弃了WebDriver。但出于某种原因,我将IE的缩放比例从125%改为100%,然后click方法就起作用了。不确定这是否是WebDriver已知的错误,但这个问题几乎让我完全放弃,直到找到解决方案。


我使用了@Emmanuel在这里发布的解决方案,因为我遇到了同样的问题。但是在我将缩放级别设置为100%(我的设置为90%!)之后,点击功能非常好用!谢谢! - Ranhiru Jude Cooray
我花了一天半的时间来解决这个问题,找到了你的答案后发现缩放设置为105%,现在已经调整回100%,一切都正常工作了。谢谢。 - Mike Bartlett

4

我也遇到了在测试页面上无法点击任何a href=""标签的问题,这个问题发生在IE 8中并且使用WebDriver。

shessuky提供的解决方案对我也适用;就是将ignoreZoomSetting和nativeEvents两种能力都设置为如下:

  • caps.setCapability("ignoreZoomSetting", true);
  • caps.setCapability("nativeEvents",false);

1

我认为您可能需要使用参数org.openqa.selenium.Capabilities来实例化InternetExplorerDriver(),如下所示:

    DesiredCapabilities caps = DesiredCapabilities.internetExplorer();
    caps.setCapability("ignoreZoomSetting", true);

    // Setting attribute nativeEvents to false enable click button in IE
    caps.setCapability("nativeEvents",false);
    WebDriver driver = new  InternetExplorerDriver(caps);

希望这能帮到你;

0

如果您正在使用觸摸屏顯示器(例如Windows 8觸摸筆記本電腦)上打開的瀏覽器窗口在IE11中運行自動化Selenium測試,請嘗試在非觸摸屏幕上打開瀏覽器窗口運行測試。
原始的.click()方法應該可以正常工作,無需進行所有程式碼的解決方法。

在類似的StackOverflow問題https://dev59.com/hW035IYBdhLWcg3wMM4G#31397650中查看我的詳細背景答案,在 Selenium 2.0b3 IE WebDriver, Click not firing中。


0

0
根据您的HTML代码,id_ctl0_pageheader_login。这个ID可能是动态生成的,也可能发生变化。
您可以尝试使用 By.linkText("Login") 或者 By.className("loginModal") 查找该元素。

我可能在试图从我的代码中删除个人信息时弄混了问题。我正在尝试通过 .id = _ctl0_pageheader_login 来找到按钮,我没有看到它有任何变化,并且代码在火狐浏览器中运行得很好。我想在踉跄地尝试了其他每一个可能的属性后,也试图通过其他方式找到它,但我很乐意再试一次。这个调用也不会失败,所以不像是 .id 发生了变化,导致我进入捕捉块。它可以正常运行,没有错误,只是永远不会点击链接。就像我上面说的,如果我执行gettext,它会返回正确的文本,所以它确实能找到它。 - ducati1212
你所发布的HTML中没有它,但是有没有可能登录链接附带了一些JavaScript代码呢? - Sergii Pozharov
登录按钮上没有JavaScript。由于webdriver认为它有控制权,我假设它会触发一个点击事件,那么有没有一种方法可以在调试模式下逐步执行点击事件并查看其操作? - ducati1212
您在IE中设置了100%的缩放比例吗?这会导致一些问题 - 当缩放不是100%时,无法单击某些链接。 - Sergii Pozharov
嘿,出乎意料地有效,我的缩放比例是95%,接下来我要解决的问题是在IE中,我似乎无法看到(实际上会抛出找不到元素错误)框架中的项目,即使我执行了driver.switchTo().frame("Loginiframe1_iframelogin");IE开发工具似乎也无法看到该框架中的单个控件,而Firebug可以。这可能是IE的问题,但如果您有任何想法,请回复。 - ducati1212
我从未使用过IFrames和WebDriver,但是你可以搜索WebDriver用户组 - 我认为我看到了一些关于它的问题 - http://groups.google.com/group/webdriver - Sergii Pozharov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接