Как автоматизировать словарный запас игры - PullRequest
0 голосов
/ 17 апреля 2020
<div class="t_monit">
          <div class="t_txt_wrap">
              <div id="munArea">
  <div class="t_lev_tit" id="levans" style="padding-top:40px;" rel="4" idx="31|2" ansidx="31|2" a4="31|2">identify</div>
  <ul class="t_lev_list">
    <li><a href="javascript:;" class="ansChk" a1="1" a2="4" a3="12103|1" a5="2">반대하다</a></li>
    <li><a href="javascript:;" class="ansChk" a1="2" a2="4" a3="26294|1" a5="2">소중히 여기다</a></li>
    <li><a href="javascript:;" class="ansChk" a1="3" a2="4" a3="9778|1" a5="2">흉내 내다</a></li>
    <li><a href="javascript:;" class="ansChk" a1="4" a2="4" a3="31|2" a5="2">동일시하다</a></li>
    </ul></div>
              <div class="mun_mask" style="background-color: transparent; display: none;"><center><img src="/html/images/test_x.png" class="imgox" style="display:none; padding-top:40px;" id="img_x"><img src="/html/images/test_o.png" class="imgox" style="display:none; padding-top:40px;" id="img_o"></center></div>
              <!-- 페이저 : S -->
              <div class="t_pager"><span id="noarea">2</span> / 30</div>
              <!-- 페이저 : E -->
            </div>
        </div>

Это HTML словарной игры. Нажмите на правильный ответ и go, чтобы перейти к следующей лексике. Div munArea - пример, и ответ находится среди класса «ansChk». Как вы можете видеть, соответствует ли значение «idx» или «ansidz» значению «a3». Это ответ. Я пытался получить значения «idx» и «a3», но каждый раз только для того, чтобы дать мне что-то вроде selenium.webdriver.remote.webelement.WebElement (session = "bd0c472720ca6f980f201f6969698a6b", element = "108c16c9-66f8-4998-a60b7a8aaa 84444c5a7a8a7a8a8a8a8a8a8a8a8a8a7 «).

e2 = driver.find_elements_by_css_selector('munArea > ul > li:nth-child(2) > a') 

Я потратил несколько часов, чтобы решить эту проблему, но я не знаю, как получить значение, а только получить текст внутри страницы.
divs = driver.find_elements_by_class_name ('ansChk' ) дал мне selenium.webdriver.remote.webelement.WebElement (session = "bd0c472720ca6f980f201f6969698a6b", element = "108c16c9-66f8-4998-a60b-844c957e7aa5"). Примерный код, который я хочу:

from selenium import webdriver
from pprint import pprint
import time
from selenium.webdriver.common.keys import Keys 
import pyautogui 
import time

while True:
        answer = driver.find_element_by_css_selector('#levans')
        lists = driver.find_elements_by_class_name('ansChk')
        print(lists) #see what's going on 
        print(answer)
        time.sleep(4)
        print('-------------------')
        if answer.get_attribute('idx') == lists.get_attribut('a3'):
            pyautogui.click(lists)

печать (списки) и печать (ответ)

[<selenium.webdriver.remote.webelement.WebElement (session="c5de78335a75eddcc9ebfdcb2c9683ac", element="a366bcc2-7a21-417d-af57-7184b81bc625")>, <selenium.webdriver.remote.webelement.WebElement (session="c5de78335a75eddcc9ebfdcb2c9683ac", element="33a3e05b-3ebc-4518-b7ac-04a509e38fe3")>, <selenium.webdriver.remote.webelement.WebElement (session="c5de78335a75eddcc9ebfdcb2c9683ac", element="d3522d7d-70ba-4298-ba28-b80876ddd0f9")>, <selenium.webdriver.remote.webelement.WebElement (session="c5de78335a75eddcc9ebfdcb2c9683ac", element="42804b14-47bb-4307-ae8f-f8c0186fd2bc")>]
<selenium.webdriver.remote.webelement.WebElement (session="c5de78335a75eddcc9ebfdcb2c9683ac", element="2d2010a1-6e1b-4605-8b1d-2c8b7c106166")>

Я не думаю, что получил правильное значение. Я хочу дать вам ссылку на страницу, но это не F2P.

Ответы [ 2 ]

2 голосов
/ 17 апреля 2020

В списке нет метода get_attribute(). Вам нужно перебрать список и затем использовать get_attribute() для каждого элемента, чтобы проверить соответствие значений.

Код :

while True:
        answer = driver.find_element_by_css_selector('#levans')
        lists = driver.find_elements_by_class_name('ansChk')
        for list in lists:
            if answer.get_attribute('idx') == list.get_attribute('a3'):
               pyautogui.click(list)

Обновление :

while True:
        answer = driver.find_element_by_css_selector('#levans')
        lists = driver.find_elements_by_class_name('ansChk')
        for list in lists:
            print(answer.get_attribute('idx'))
            print(list.get_attribute('a3'))
            if answer.get_attribute('idx') == list.get_attribute('a3'):
               pyautogui.click(list)
0 голосов
/ 17 апреля 2020

Попробуйте ниже

question= driver.find_element_by_id('levans').get_attribute("idx")
print (question.text)

element= driver.find_elements_by_xpath("//munArea//ul//li//a")
  for items in element:   
     print (items.text)
     if(items.get_attribute("a3")==question):
        print("found")
     else:
        print("not found")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...