Как я могу использовать Selenium с Python3 и xpath, чтобы щелкнуть изображение в HTML-таблице? - PullRequest
0 голосов
/ 10 марта 2019

Как я могу использовать Selenium с Python3 и xpath, чтобы щелкнуть изображение в HTML-таблице?Веб-страница, которую я использую: http://www.swissdock.ch/docking. Изображение, на котором я хочу щелкнуть с помощью Selenium, - это зеленый знак плюс, который отображается при вводе кода pdb в поиске выбора цели.Когда я щелкнул правой кнопкой мыши на изображении, выберите, а затем скопировать Xpath, Xpath выглядит так: // * [@ id = "example"] / tbody / tr / td [1] / img

Код IЯ использовал, чтобы попробовать это:

#!/usr/bin/env python3
from selenium import webdriver

# This section is my working code
driver1 = webdriver.Chrome()
driver1.get("http://www.swissdock.ch/docking")
inputElementc = driver1.find_element_by_id("DockingTargetSearch")
inputElementc.send_keys('4gu6')
linka = driver1.find_element_by_id('target_search_submit')
linka.click()

#This section is my code that doesn't work
button = driver1.find_element_by_xpath("//*[@id='example']/tbody/tr/td[1]/img")
button.click()

Помимо приведенного выше кода, я последовал множество других примеров без успеха.Я также нашел похожие примеры, но для java и Python2, которые я не смог перевести на Python3.

Ответы [ 2 ]

0 голосов
/ 22 июня 2019

Задача нажатия на зеленую кнопку с помощью Selenium усложняется тем, что она находится внутри таблицы, что, как мне говорят, является плохой практикой веб-разработки;Таблицы должны использоваться для данных.

Другой подход к задаче.У рассматриваемого веб-сайта есть альтернатива выбору цели поиска, при которой пользователь может загрузить файл.Загрузите целевой файл, который вы собираетесь искать, из базы данных pdb.Измените целевой файл с помощью программы молекулярного моделирования, такой как Chimera, для удаления дополнительных цепочек.

Затем удалите код Selenium для выполнения поиска цели и замените его кодом для загрузки целевого файла, который был загружен избаза данных (следующие четыре строки)

linkb = driver1.find_element_by_id('link_target_upload')
linkb.click()
linkz = driver1.find_element_by_id('DockingTargetUpload')
linkz.send_keys('/path/filename')
0 голосов
/ 10 марта 2019

Я использовал этот синтаксис в Python3

ActionChains(driver1).move_to_element(button).click().perform() 

Однако, глядя на вашу HTML-таблицу, проблема заключается в том, что она вызывает ссылку на изображение несколько раз в таблице, так как на нее ссылаются один раз, но повторяют, чтобы выяснить, какдля указания строки будет ключ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...