无法使用Selenium和Python单击“显示更多”

时间:2018-10-18 09:20:10

标签: python selenium

我无法点击“ Mehr anzeigen”。我正在使用Python执行此任务。

HTML:

<div model="::expose.model.EstateDescription" class="ng-isolate-scope">
    <p ng-bind-html="::model | newline" class="ng-binding is-truncated" style="overflow-wrap: break-word;">Das in 1975 massiv gebaute Reihenendhaus ist auf drei Ebenen zu Wohnzwecken errichtet worden. 1990 wurde der Dachstuhl erneuert und gleichzeitig der Spitzboden ausgebaut. Im Kellergeschoss wurde die Möglichkeit zum Ausbau einer Einliegerwohnung mit separatem Eingang geschaffen. Im Erdgeschoss befindet sich ein großes Wohnzimmer mit angrenzender Terrasse, eine Küche, ein Flur und ein Gäste-WC. Im Obergeschoss wurde ein Bad mit Wanne und Dusche, zwei kleinere Schlafzimmer und ein Zimmer mit Balkon angeordnet. Im Spitzboden gibt es zwei Zimmer und... </p>
    <!-- ngIf: showLink -->
    <a ng-if="showLink" class="readmore show-more-link ng-binding ng-scope" ng-click="toggleRead()" ng-class="isTruncated?'':'open'">Mehr anzeigen</a> 
    <!-- end ngIf: showLink -->
</div>

我总是会收到此错误:

  

WebDriverException:消息:未知错误:元素<a ng-if="showLink" class="readmore show-more-link ng-binding ng-scope" ng-click="toggleRead()" ng-class="isTruncated?'':'open'" btattached="true">...</a>在点(114,567)不可单击。其他   元素将获得点击:<p>...</p>

我也在Mozilla和Chrome上尝试过。

任何提示将不胜感激。

我尝试了以下方法:

driver.find_element_by_css_selector(".readmore").click()
driver.find_element_by_link_text('Mehr anzeigen').click()
driver.find_element_by_partial_link_text('Mehr an').click()

**解决方案:**每次我用Selenium打开某个URL时,都会出现一个cookie框,其中隐藏了该位置。

2 个答案:

答案 0 :(得分:0)

首先,等待段落元素从链接顶部消失,然后单击链接。尝试下面的代码,将与链接重叠的段落元素的详细信息:

from selenium.webdriver.support import ui
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

ui.WebDriverWait(driver, 10).until(EC.invisibility_of_element_located((By.CSS_SELECTOR, "p[class='ng-binding is-truncated']")));
driver.find_element_by_link_text('Mehr anzeigen').click();

答案 1 :(得分:0)

您尝试过动作课吗?

Actions action = new Actions(driver);

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

action.click(element).build().perform();