【问题标题】:Click event not happening in Python with Selenium web driver使用 Selenium Web 驱动程序在 Python 中未发生单击事件
【发布时间】:2018-10-15 18:25:51
【问题描述】:

在以下使用 Python 和 Selenium Web 驱动程序的场景中再次面临挑战的朋友:-

  1. 单击链接名称为“区域排名网站”时未发生单击事件。 MSTR 报告的 HTML 代码如下:-

    <td class="mstrLargeIconViewItemText" rowspan="1" colspan="1" cx="[2,1,0,5,1,6,7]" cxid="folderAllModes_cmm" oid="600E4BA841AC84797221F7BB5262C3E0" oty="55"><a title="Run Document" class="mstrLargeIconViewItemLink" onclick="return submitLink(this, event);" href="Main.aspx?evt=2048001&amp;src=Main.aspx.2048001&amp;visMode=0&amp;currentViewMedia=1&amp;documentID=600E4BA841AC84797221F7BB5262C3E0" runasexpress="1" alt="Run Document"></a><div class="mstrLargeIconViewItemName"><span sty="nm"><a title="Area Rank Web" class="mstrLink" onclick="return submitLink(this, event);" href="Main.aspx?evt=2048001&amp;src=Main.aspx.2048001&amp;visMode=0&amp;currentViewMedia=1&amp;documentID=600E4BA841AC84797221F7BB5262C3E0" runasexpress="1">Area Rank Web</a></span></div><div class="mstrLargeIconViewItemOwner"><label>Owner:</label><span><div title="Administrator" class="owner">Administrator</div></span></div><div class="mstrLargeIconViewItemModified"><label>Modified:</label><span><div timestamp="1525148536000">5/1/18 4:22:16 AM</div></span></div><div class="mstrLargeIconViewItemDescription"></div><div></div><div class="mstrLargeIconViewItemActions"><span><a class="mstrLink" onclick="if (!mstrFolderActions.checkACL(this, event, '600E4BA841AC84797221F7BB5262C3E0', 55)) return; return submitLink(this, event);" href="Main.aspx?evt=3032&amp;src=Main.aspx.3032&amp;objectType_3032=55&amp;objectID_3032=600E4BA841AC84797221F7BB5262C3E0" ty="sub">Subscriptions</a></span></div></td>
    

    我尝试了以下方法但没有成功:

    #driver.find_element_by_xpath(".//*[title='Area Rank Web']").click();
    #driver.find_elements_by_class_name (("mstrLargeIconViewItemName") and contains(.,'Area Rank Web')).click()
    #driver.find_element_by_id("600E4BA841AC84797221F7BB5262C3E0").click()
    #driver.find_element_by_css_selector("600E4BA841AC84797221F7BB5262C3E0").click()
    #WebDriverWait(driver, 5).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='mstrLargeIconViewItemText']/span[@class='mstrIcon-lg' and contains(.,'Area Rank Web')]"))).click()
    

    2。 有一个块有两个值:- AREA,DISTRICT。您可以选择多个值,然后单击箭头按钮,将所选内容移动到块的右侧,然后单击提交按钮

    HTML 代码:

    <div title="AREA" class="mstrListBlockItemSelected" style="margin-top: 0px;"><div class="mstrBGIcon_ae mstrListBlockItemName" style="background-position: 2px 50%; padding-left: 23px;">DSI</div></div>
    
    <div title="DISTRICT" class="mstrListBlockItem" style="margin-top: 0px;"><div class="mstrBGIcon_ae mstrListBlockItemName" style="background-position: 2px 50%; padding-left: 23px;">ONC</div></div>
    

尝试了以下方式,但点击事件没有发生

【问题讨论】:

  • 请编辑问题以将其限制为具有足够详细信息的特定问题,以确定适当的答案。避免同时提出多个不同的问题。
  • 您可以忽略第二个问题。在第一个 m 尝试单击一个对象时,不确定它是否是链接。我附上了 HTML 代码供您参考。 M 试图在该链接上生成点击事件,但它没有发生。我尝试了我分享但没有成功的可能方法。请建议

标签: python selenium selenium-webdriver


【解决方案1】:

你可以试试 link_text/ partial_link_text 吗?

driver.find_element_by_link_text('Area Rank Web').click()

driver.find_element_by_partial_link_text('Area Rank Web').click()

另外,请尝试在单击链接之前明确等待。

WebDriverWait(self.driver, 10).until(expected_conditions.element_to_be_clickable(
             (By.LINK_TEXT, 'Area Rank Web')
))

如果以上都失败了,使用execute_script方法在链接上调用点击事件

link = driver.find_element_by_link_text('Area Rank Web')
driver.execute_script('arguments[0].click();', link)

【讨论】:

  • 感谢您分享详细信息。对于前两个脚本收到以下错误消息:-ElementClickInterceptedException:元素在点 (411,73) 处不可点击。其他元素会收到点击:。上一个脚本的结果。
  • ElementClickInterceptedException 表示由于目标元素被某种方式遮挡而无法正确执行点击。检查页面上的其他元素是否(部分或全部)位于目标元素之上
猜你喜欢
  • 2018-01-22
  • 1970-01-01
  • 2014-05-30
  • 1970-01-01
  • 2019-04-22
  • 2016-10-04
  • 2016-09-29
  • 1970-01-01
  • 2021-10-15
相关资源
最近更新 更多