Нажатие на веб-таблицу с селеном Python 3 - PullRequest
0 голосов
/ 07 ноября 2019
<tr id="GBPUSD" class="filled" title="Great Britain Pound vs US Dollar
Calculation: Forex
Trade: Full access" draggable="true" style="background: rgb(255, 255, 255);"><td 
id="symbol" class="symbol"><div class="container"><span class="content">
<span class="i down">&nbsp;</span>GBPUSD</span></div></td>
<td id="bid" class="down" style="text-align: right;">
<div class="container"><span class="content">1.28106</span></div></td>
<td id="ask" class="down" style="text-align: right;"><div class="container">
<span class="content">1.28116</span></div></td><td></td></tr>

Это HTML-код для элемента, на который я хочу дважды щелкнуть с помощью селена.

elem = driver.find_element_by_xpath("//tr[@id='GBPUSD']")
    elem.click()
    elem.click()

Это мой код Python, но я получаю сообщение об ошибке:

selenium.common.exceptions.InvalidSelectorException: Message: invalid selector: 
Unable to locate an element with the xpath expression //*[@id='symbol']/div] 
because of the following error:
SyntaxError: Failed to execute 'evaluate' on 'Document': The string '//*[@id='symbol']/div]' is not a valid XPath expression.
  (Session info: chrome=78.0.3904.87)

Пожалуйста, помогите мне :(

1 Ответ

0 голосов
/ 07 ноября 2019

Ваш код показывает один XPath, но ваше сообщение об ошибке показывает другой - XPath в вашем сообщении об ошибке неверен (//*[@id='symbol']/div]) и должен быть изменен на //*[@id='symbol']/div

Код вВаш пример на самом деле не код, который выдает ошибку здесь.

Кроме того, вы можете дважды щелкнуть правильно, как это:

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


// wait for element to exist
elem = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.XPATH, "//tr[contains(@title, 'Great Britain Pound')]")))

// double click the element
actionChains = ActionChains(driver)
actionChains.double_click(elem).perform()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...