Здравствуйте Гость [ Вход | Регистрация ] | Форум в сети 5461-й день

 Выбор елемента из результата поиска., Selenium/Python

Console
Jun 27 2018, 9:08
  
Пост #1



Репутация:   434  
Ветеран
*****

Группа: Пользователи
Сообщений: 7 885
С нами с: 23-March 08


Собствено на странице есть два елемента, с одинаковым текстом... поиск по:
driver.find_element_by_link_text("19:00-20:00").click()

Логика поиска, первое совпадения и клик, а нужен как раз второй елемент...

Проблема в том что там сильно хитрая разметка и нет id, ссылки динамические, сложно зацепитя...
Но еще варинт xpath, но в нем я плаваю как удоборение и путнего тоже не получилось...

» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
 
Reply to this topicStart new topic
Ответов(1 - 6)
xose
Jun 27 2018, 12:09
  
Пост #2



Репутация:   20  
Дух


Группа: Пользователи
Сообщений: 79
С нами с: 30-April 15


Обидва елементи це лінки? Там схоже побитий текст. Можна топорно брати другий лінк по індексу або ж шукати правильний лінк по парент елементу.

Сообщение отредактировал xose - Jun 27 2018, 12:17
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Console
Jun 27 2018, 15:17
  
Пост #3



Репутация:   434  
Ветеран
*****

Группа: Пользователи
Сообщений: 7 885
С нами с: 23-March 08


(xose @ Jun 27 2018, 13:09) Перейти к цитате

Обидва елементи це лінки? Там схоже побитий текст. Можна топорно брати другий лінк по індексу або ж шукати правильний лінк по парент елементу.

Да там текст почему на еврите стал d.gif
А если не сложно примеры можно, как конструкция выглядит? буду благодарен.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
mega K.
Jun 27 2018, 15:26
  
Пост #4



Репутация:   23  
Дух


Группа: Пользователи
Сообщений: 178
С нами с: 1-July 07


//a[contains(text(), '19:00-20:00')][2]

Сообщение отредактировал mega K. - Jun 27 2018, 15:30
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Console
Dec 21 2020, 23:48
  
Пост #5



Репутация:   434  
Ветеран
*****

Группа: Пользователи
Сообщений: 7 885
С нами с: 23-March 08


Что-то я заржавел..
CODE Format
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
with webdriver.Chrome(executable_path='D:\demo\chromedriver.exe').maximize_window() as driver:
    wait = WebDriverWait(driver, 10)
    driver.get("https://www.google.com.ua/")
    print("textContent")


Браузер на секунду открывается в весь размер, а потом:
CODE Format
Traceback (most recent call last):
  File "D:/demo/demo.py", line 4, in <module>
    with webdriver.Chrome(executable_path='D:\demo\chromedriver.exe').maximize_window() as driver:
AttributeError: __enter__

Process finished with exit code 1
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
shalenuy
Jan 2 2021, 21:54
  
Пост #6



Репутация:   44  
Дух


Группа: Пользователи
Сообщений: 180
С нами с: 7-July 12


(Console @ Dec 21 2020, 23:48) Перейти к цитате

Что-то я заржавел..
CODE Format
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
with webdriver.Chrome(executable_path='D:\demo\chromedriver.exe').maximize_window() as driver:
    wait = WebDriverWait(driver, 10)
    driver.get("https://www.google.com.ua/")
    print("textContent")


Браузер на секунду открывается в весь размер, а потом:
CODE Format
Traceback (most recent call last):
  File "D:/demo/demo.py", line 4, in <module>
    with webdriver.Chrome(executable_path='D:\demo\chromedriver.exe').maximize_window() as driver:
AttributeError: __enter__

Process finished with exit code 1



yo!
Зачем открывать драйвер через with, закинь в перменную ( ну или положи в папку с кодом и не нужно вызывать )
Потому что в даном кейсе как раз из за with ругается.
Сделай проще


options = ChromeOptions()
options.add_argument("--start-maximized")

driver = webdriver.Chrome(executable_path='D:\demo\chromedriver.exe', options)

И здавай ожидание "пока элемент не будет виден на странице"
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Console
Jan 5 2021, 0:57
  
Пост #7



Репутация:   434  
Ветеран
*****

Группа: Пользователи
Сообщений: 7 885
С нами с: 23-March 08


(shalenuy @ Jan 2 2021, 21:54) Перейти к цитате

yo!
Зачем открывать драйвер через with, закинь в перменную ( ну или положи в папку с кодом и не нужно вызывать )
Потому что в даном кейсе как раз из за with ругается.
Сделай проще
options = ChromeOptions()
options.add_argument("--start-maximized")

driver = webdriver.Chrome(executable_path='D:\demo\chromedriver.exe', options)

И здавай ожидание "пока элемент не будет виден на странице"


CODE Format
from selenium import webdriver
driver = webdriver.Chrome(executable_path=r"D:/demo/chromedriver").maximize_window()
driver.get("http://www.python.org")

Почему таким образом возвращает ?
CODE Format
Traceback (most recent call last):
  File "D:/demo/sada.py", line 3, in <module>
    driver.get("http://www.python.org")
AttributeError: 'NoneType' object has no attribute 'get'

Пробовал как вы советовали через Options, я или модуль не догрузил или я хз()
CODE Format
from selenium import webdriver
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--start-maximized")
driver = webdriver.Chrome(executable_path=r"D:/demo/chromedriver", options=chrome_options)


driver.get("http://www.python.org")

Работает... grin3.png

Сообщение отредактировал Console - Jan 5 2021, 1:10
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

Reply to this topicStart new topic

 



- Упрощённая версия
Сейчас: 25th February 2021 - 22:02
Сайт не предоставляет электронные версии произведений, а занимается лишь коллекционированием и каталогизацией ссылок, присылаемых и публикуемых на форуме нашими читателями. Если вы являетесь правообладателем какого-либо представленного материала и не желаете чтобы ссылка на него находилась в нашем каталоге, свяжитесь с нами и мы удалим её. Файлы для обмена предоставлены пользователями сайта.