Невозможно нажать на элемент javascript через драйвер селена - PullRequest
0 голосов
/ 12 мая 2019

Я использую приведенный ниже xpath, но мой скрипт не нажимает на эти элементы (python, scrapy, selenium)

driver.find_element(By.XPATH, '//*[@id="MiniReport2"]/thead/tr/td[@class="Over" and contains(@onclick,"MenuClick")]')

Образец HTML:

<table id="MiniReport2" border="0" cellspacing="0" cellpadding="0" class="Menu Unit" style="">            
            <thead>                
                <tr>                    
                    <td onmouseover="className='Over'" onmouseout="className=''" onclick="javascript:MenuClick('MiniReport2');" class="">
                         <div class="Plus">4. Report</div>                    
                    </td>                
                </tr>            
            </thead>            
</table>

Ответы [ 2 ]

0 голосов
/ 13 мая 2019

Для обработки динамического элемента используйте WebdriverWait и следующую стратегию локатора.

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

element=WebDriverWait(driver,30).until(EC.element_to_be_clickable((By.XPATH,'//table[@class="Menu Unit"][starts-with(@id,"MiniReport")]//tr//td[contains(@onclick,"MenuClick")]/div[@class="Plus"][contains(.,"4. Report")]')))
element.click()
0 голосов
/ 12 мая 2019

Добро пожаловать на SO.

Вот xpath, который вы можете использовать.

//table[@id='MiniReport2']//td[contains(@onclick,'MenuClick')]

Вот скрипт (я полагаю, вы используете Python)

driver.find_element_by_xpath("//table[@id='MiniReport2']//td[contains(@onclick,'MenuClick')]").click()

Если вы хотите нажать на 4. Report, используйте ниже

driver.find_element_by_xpath("//table[@id='MiniReport2']//td[contains(@onclick,'MenuClick')]/div[normalize-space(.)='4. Report']").click()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...