Как запустить Selenium в Kivy (браузер открывается в окне Kivy) - PullRequest
0 голосов
/ 14 июля 2020

Я написал небольшой сценарий, в котором пользователь вводит номер продукта, который затем используется для поиска элемента. Я использую веб-драйвер для chrome. Прямо сейчас он работает так, как задумано.

from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.textinput import TextInput
from kivy.uix.image import Image
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

class KivyButton(App):
    def update(self,instance,*args):
        driver = webdriver.Chrome()
        driver.get('https://us.pandora.net/')
        fill_box = driver.find_element_by_xpath('//*[@id="q"]')
        fill_box.clear()
        fill_box.send_keys(self.product_number.text)
        try:
            WebDriverWait(driver, 3).until(EC.element_to_be_clickable((By.XPATH,'/html/body/div[1]/div/div[1]/header/nav/div[2]/div[3]/div/div/div/div[2]/div/a/div[1]/img'))).click()
        except:
            print('invalid info')
            driver.close()

    def build(self):
        self.layout  = FloatLayout(size=(300,300))
        image=Image(source='pandora.jpg',allow_stretch=True,keep_ratio=False)
        title=Label(text='Please Enter Product Number',color=[0,0,0,1],font_size='20dp', pos=(200,350),size_hint=(0.1,.1))
        self.mybtn=Button(text='Enter',on_press=self.update,pos=(500,300),size_hint=(.1,.1))
        self.product_number=TextInput(text='',font_size='40dp',pos=(100,300),size_hint=(.5,.1))
        self.layout.add_widget(image)
        self.layout.add_widget(self.product_number)
        self.layout.add_widget(self.mybtn)
        self.layout.add_widget(title)
        return self.layout

KivyButton().run()

Однако я хочу запустить это как приложение на android (поэтому я написал его на Kivy). Я попытался узнать, есть ли какой-либо веб-драйвер для веб-браузера android, или же веб-драйвер, который я использую здесь, будет работать с мобильной версией Chrome, но я не смог ничего найти.

Кроме того, вместо того, чтобы открывать браузер отдельно, я бы хотел, чтобы браузер открывался в окне Kivy (т.е. отображал браузер в окне приложения). В его нынешнем виде браузер chrome открывается отдельно.

Любая помощь будет принята с благодарностью!

1 Ответ

1 голос
/ 14 июля 2020

Не думаю, что с селеном можно было бы поступить так. Я считаю, что вы хотели бы использовать собственный браузер мобильной ОС.

Есть еще один вопрос о переполнении стека, касающийся того, как это сделать здесь

...