我试图单击一个弹出按钮,我的代码显示了错误:
“ selenium.common.exceptions.ElementNotInteractableException:消息:元素不可交互”。
我已经搜索了,但是找不到带有弹出按钮的解决方案。
Image for clicking show 10 rows and displaying the pop-up box所附的图像是理想的结果,并且在其后面有“显示10行”,而且很容易看到。
我的HTML代码中包含此代码,需要单击按钮。
<div class="table-responsive">
<ul class="nav nav-tabs">
<li class="active"><a data-toggle="tab" id="loadsur" href="#Section" aria-expanded="true">LoadSurvey</a></li>
</ul>
<div class="container-fluid">
<div class="row">
<div class="col-md-12" style="margin-left: -10px;">
<div class="table-responsive">
<div id="myDataTable25_wrapper" class="dataTables_wrapper no-footer"><div class="dt-buttons">
<button class="dt-button buttons-csv buttons-html5" tabindex="0" aria-controls="myDataTable25">
<span>Csv</span></button>
<button class="dt-button buttons-excel buttons-html5" tabindex="0" aria-controls="myDataTable25">
<span>Excel</span></button>
<button class="dt-button buttons-collection buttons-page-length" tabindex="0" aria-controls="myDataTable25" aria-haspopup="true">
<span>Show 10 rows</span></button>
</div>
</div>
</div>
</div>
</div>
在Python中,我尝试了以下方法:
def single_meter(i=0):
browser=webdriver.Chrome('C:\Webdrivers\chromedriver.exe')
for row in range (5,10):
browser.get('http://#link'+consumer_ID+'?reportrange=21%2F07%2F2018-25%2F08%2F2019')
Show10 = find_element_by_xpath("//button[@class='dt-button buttons-collection buttons-page-length']//span[contains(text(),'Show 10 rows')]")
Show10.click()
我希望单击此按钮,这将导致出现一个弹出按钮。
答案 0 :(得分:2)
它可能在chmod +x ./NAME_OF_THE_FILE
中。
首先尝试找到iframe并切换到它。
./NAME_OF_THE_FILE
然后尝试单击按钮。
iframe
答案 1 :(得分:1)
通过{1>更改xpath
//button[@class='dt-button buttons-collection buttons-page-length']//span[contains(text(),'Show 10 rows')]
请尝试使用WebDriverWait
确保该元素存在,然后添加expected_conditions
直到元素clickable
。
导入此:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions
尝试一下:
wait = WebDriverWait(singlemeter, 10)
Show10 = wait.until(expected_conditions.element_to_be_clickable((By.XPATH, "//button[@class='dt-button buttons-collection buttons-page-length']//span[contains(text(),'Show 10 rows')]")))
Show10.click()
或使用ActionChains
导入:
from selenium.webdriver import ActionChains
尝试一下:
ActionChains(singlemeter).move_to_element(Show10).click(Show10).perform()
答案 2 :(得分:1)
我已经解决了这个问题。错误是与xpath中的链接有关。后来我从html复制并粘贴,代码现在看起来像这样:
Show10 = find_element_by_xpath("//*[@id='myDataTable2_wrapper']/div[1]/button[7]/span")
Show10.click()
它工作正常。谢谢大家的帮助。